Comment puis-je implémenter en toute sécurité une fonction de connexion sans mot de passe?

10

Je viens de publier un nouveau plugin: No More Passwords

Je l'ai actuellement bêta car la connexion à une plate-forme est un problème sensible et je ne veux pas publier quelque chose qui pourrait comporter des failles de sécurité. Voici donc ma requête:

Est-ce sécurisé?

J'ai fait ce qui suit pour assurer la sécurité:

  1. Le nom d'utilisateur / mot de passe ne sont jamais transmis d'avant en arrière, uniquement le hachage unique.
  2. Le hachage est supprimé de la base de données une fois qu'il est utilisé, les anciens hachages qui n'ont pas été utilisés ne peuvent l'être que si la base de données est piratée, mais vous rencontrez des problèmes plus importants.
  3. Toutes les requêtes de base de données sur le hachage ont été échappées pour empêcher les attaques XSS.
  4. nonce ajouté à l'appel ajax.
  5. nonce et confirmation ajoutés à l'extrémité mobile pour empêcher l'attaque CSRF.

Ici, j'ai une description complète de son fonctionnement .

Version suivante J'espère implémenter oauth via twitter, car iOS fonctionne maintenant en ...

Merci d'avance pour votre contribution.

Edit: j'ai décidé qu'en tant que couche ajoutée, j'ajouterais une vérification de sessionID pour m'assurer que c'est le même navigateur qui se connecte que le navigateur qui a initié la connexion par code QR.

jackreichert
la source

Réponses:

5

(Je suis un aspirant pour les schémas de connexion alternatifs)

Quelques tergiversations concernant la fuite de DB:

  • Vous utilisez mysql_real_escape_string()directement. La méthode préférée utilise $wpdb->prepare()ou esc_sql().

  • Les requêtes UPDATE sont mieux gérées par $wpdb->update()

scribu
la source
J'ai mis à jour le plugin pour l'inclure. Merci pour le conseil.
jackreichert
5

Je pense que c'est une excellente idée, mais comme toujours la plus grande faiblesse est le facteur humain, dans ce cas, ce serait le téléphone lui-même qui serait perdu, volé ou intercepté. Avez-vous pensé à ajouter une authentification à 2 couches, comme un code de vérification SMS (comme gmail, etc.). Ou une alternative plus simple serait un cookie + mot secret.

Pouvez-vous également mentionner quel algorithme génère le code QR dans votre page À propos?

Wyck
la source
Le plugin dépend donc de votre connexion sur votre téléphone pour fonctionner. Le risque de sécurité de perdre votre téléphone équivaut à laisser votre ordinateur connecté à votre site wp. J'utilise l'API graphique de Google pour générer le code QR.
jackreichert
3
Je pensais juste que ce serait une bonne idée d'ajouter une autre couche qui ne gênerait pas l'utilisateur, car les téléphones sont volés / perdus beaucoup plus que les PC, et sur un PC, vous devez toujours connaître le nom d'utilisateur / mot de passe.
Wyck