Wie kann ich eine kennwortlose Anmeldefunktion sicher implementieren?

10

Habe gerade ein neues Plugin gepostet: Keine Passwörter mehr

Ich habe es derzeit als Beta markiert, da das Anmelden bei einer Plattform ein heikles Problem ist und ich nichts veröffentlichen möchte, das möglicherweise Sicherheitslücken aufweist. Also hier ist meine Frage:

Ist sicher?

Ich habe Folgendes getan, um die Sicherheit zu gewährleisten:

  1. Benutzername / Passwort werden niemals hin und her weitergegeben, nur der eindeutige Hash.
  2. Hash wird aus der Datenbank entfernt, sobald er verwendet wird. Alte Hashes, die nicht verwendet wurden, können nur verwendet werden, wenn die Datenbank gehackt wurde. Dann treten jedoch größere Probleme auf.
  3. Alle Datenbankabfragen des Hashs wurden maskiert, um XSS-Angriffe zu verhindern.
  4. nonce zum Ajax-Aufruf hinzugefügt.
  5. Nonce und Bestätigung auf mobiler Seite hinzugefügt, um CSRF-Angriffe zu verhindern.

Hier habe ich eine vollständige Beschreibung, wie es funktioniert .

Nächste Version Ich hoffe, oauth über Twitter zu implementieren, da iOS es jetzt in ...

Vielen Dank für Ihre Eingabe im Voraus.

Bearbeiten: Ich habe beschlossen, als zusätzliche Ebene eine Sitzungs-ID-Prüfung hinzuzufügen, um sicherzustellen, dass sich derselbe Browser anmeldet wie der Browser, der die QR-Code-Anmeldung initiiert hat.

jackreichert
quelle

Antworten:

5

(Ich bin ein Trottel für alternative Anmeldeschemata)

Einige Nitpicking bezüglich der DB-Flucht:

  • Sie verwenden mysql_real_escape_string()direkt. Die bevorzugte Methode ist die Verwendung von $wpdb->prepare()oder esc_sql().

  • UPDATE-Abfragen werden am besten von bearbeitet $wpdb->update()

Scribu
quelle
Ich habe das Plugin aktualisiert, um das einzuschließen. Danke für den Tipp.
Jackreichert
5

Ich denke, es ist eine großartige Idee, aber wie immer ist der menschliche Faktor die größte Schwäche. In diesem Fall würde das Telefon selbst verloren gehen, gestohlen oder abgefangen werden. Haben Sie darüber nachgedacht, eine 2-Layer-Authentifizierung wie einen SMS-Bestätigungscode (wie Google Mail usw.) hinzuzufügen? Oder eine Alternative, die einfacher ist, wäre ein Cookie + ein geheimes Wort.

Können Sie auch erwähnen, welcher Algorithmus den QR-Code auf Ihrer About-Seite generiert?

Wyck
quelle
Das Plugin setzt also voraus, dass Sie auf Ihrem Telefon angemeldet sind, um zu funktionieren. Das Sicherheitsrisiko, dass Sie Ihr Telefon verlieren, entspricht in etwa dem Risiko, dass Ihr PC auf Ihrer wp-Site angemeldet bleibt. Ich verwende Googles Diagramm-API, um den QR-Code zu generieren.
Jackreichert
3
Ich dachte nur, es wäre eine gute Idee, eine weitere Ebene hinzuzufügen, die den Benutzer nicht behindert, da Telefone viel mehr gestohlen werden / verloren gehen als PCs, und auf einem PC müssten Sie immer noch den Benutzernamen / das Passwort kennen.
Wyck