Frage

Wenn für neue Konten anmelden, Web-Anwendungen fragen oft nach der Antwort auf eine ‚Sicherheitsfrage‘, das heißt Name des Hundes, etc.

Ich mag in unserer Datenbank gehen und suche nach Fällen, in denen Benutzer nur die Tastatur püriert stattdessen eine legitime Antwort der Bereitstellung -. Das ist ein hoher Indikator für eine missbräuchliche / betrügerischen Kontos

„Mädchenname der Mutter?“ lakdsjflkaj

Haben Sie Vorschläge, wie ich über das tun dies gehen?

Hinweis: Ich bin nicht nur reguläre Ausdrücke auf diesen 'Antworten auf Sicherheitsfragen' mit

Die 'Antworten' können sein:

  1. Ausgewählte aus einer db einige grundlegende SQL Regexes mit

  2. Analysiert so oft wie nötig mit Python regulären Ausdrücke

  3. Im Vergleich / beschnittenen / erzielte bei Bedarf

Dies ist eine technische Frage, nicht ein philosophischer ; -)

Danke!

War es hilfreich?

Lösung

Sie sind wahrscheinlich besser dran, n-Gramm-Verteilung, ähnlich wie Spracherkennung analysiert werden.

Dieser Code ist ein Beispiel für die Spracherkennung mit trigrams. Meine Vermutung ist, die Tastatur Zerschlagung trigrams ziemlich einzigartig sind und erscheinen nicht in normaler Sprache.

Andere Tipps

Ich würde das nicht tun - meiner Meinung nach diesen Fragen der Sicherheit zu schwächen, so als Benutzer ich immer versuchen, ein anderes Halb-Kennwort als Antwort zu geben - für Sie wäre es püriert mögen. Nun, es ist püriert, aber das ist genau das, was ich tun möchte.

Btw. Ich bin nicht sicher über die Tatsache, dass Sie die Antworten abfragen. Da sie Ihr Passwort-Schutz zu überwinden, sollten sie wie Passwörter behandelt werden = als Hash gespeichert!

Bearbeiten
Wenn ich lese, dieser Artikel ich diese Fragen sofort erinnerte; -)

Der gesamte Ansatz von Sicherheitsfragen ist ziemlich fehlerhaft.

Ich habe immer gefunden, Menschen setzen Sicherheits Antworten schwächer als die Passwörter verwenden sie .
Sicherheitsfragen sind nur ein weiteres Glied in einer Sicherheitskette - das schwächere Glied!

IMO, ein besserer Weg wäre, zu gehen erlaubt es dem Benutzer ein neues Passwort-an ihre registrierte E-Mail-ID gesendet anfordern . Dies hat zwei Vorteile.

  1. hat die Brute-Force-Versuch zu lokalisieren und die E-Mail-Dienst zu brechen erste (und Sie werden sie nie dort helfen - halten Sie die Anmeldung E-Mail-ID sehr geschützt)
    • der Benutzer Ihres Dienst wird immer einen Hinweis erhalten, wenn jemand eine Brute-Force versucht (sie bekommen eine E-Mail sagen, dass sie versuchten, ihr Passwort zu regenerieren)

Wenn Sie geheime Fragen haben muss, lassen Sie sie auslösen ein erneutes erzeugt (nie das Kennwort des Benutzers senden, regeneriert einen temporären, vorzugsweise einmaligen Zwangs-) Passwort Versand an der E-Mail-ID sich mit registriert - und tun nicht zeigen überhaupt.

Ein weiterer Trick ist es, macht die geheime Frage selbst ihre registrierte E-Mail-ID .
Wenn sie es richtig setzen Sie ein senden Wieder erzeugt temporäres Passwort an dieser E-Mail-ID.

Es gibt keine Möglichkeit, dies mit einem regulären Ausdruck zu tun. Eigentlich kann, glaube ich nicht von einer angemessenen Art und Weise dies überhaupt zu tun - wo Sie die Linie zwischen verdächtigen und unverdächtigen ziehen würden? Ich für einmal beantworten oft die Sicherheitsfragen mit einer verschleierten Antwort. Schließlich ist mein Mädchenname der Mutter, um herauszufinden, nicht die härteste Sache.

Wenn Sie eine Liste von Buchstaben-Paar Wahrscheinlichkeiten in Englisch finden können, können Sie eine ungefähre Wahrscheinlichkeit für das Wort konstruieren kein „echtes“ englisches Wort ist, mit den geringsten möglichen Paaren und Paaren, die nicht in der Liste enthalten sind. Leider kann man sich nicht, wenn Sie Namen oder andere „Nicht-Worte“ haben, dann zwingen, englische Worte zu sein.

Vielleicht könnten Sie für eine Fülle von Konsonanten überprüfen. So zum Beispiel, in Ihrem Beispiel lakdsjflkaj gibt es zwei Vokalen (a) und 9 Konsonanten. Normalerweise ist die Wahrscheinlichkeit, einen Vokal des Schlagens, wenn zufällig Taste ist viel niedriger als die von einem Konsonanten zu treffen.

Dejunk ist eine Ruby-Bibliothek, aus der Sie Inspiration ziehen. Es implementiert einige der Vorschläge in anderen Antworten. Er ist der Auffassung Eingabetastatur Maischen, wenn der Eingang sein:

  • Enthält Zeichen Bigramme, die in Echt Text unwahrscheinlich erscheinen, aber das ist nahe beieinander auf einer Tastatur. (Die Bibliothek enthält eine Liste solcher Bigramme).
  • Beginnt mit einem unerwarteten Satzzeichen.
  • hat zu viele sehr kurze Worte.
  • Hat keine Vokale.
  • Hat Zeichen, die eine unzumutbare Anzahl von Malen wiederholt werden.

Sie können zu Beginn für einen Großbuchstaben überprüfen .... dass Sie einige Fehlalarme sicher bekommen.

Eine schnelle Google gab mir diese Sie jeder gegen einen Namen in dieser Liste vergleichen könnte .

Offensichtlich funktioniert nur für die Sicherheitsfrage Sie angegeben.

Haben Sie auch gesehen:

Anatomie des twitter Angriff

Ich werde hart beim nächsten Mal denken, dass ich eine Sicherheitsfrage implementieren.

Wenn Ihre Frage schon einmal zu einem echten, menschlichen namen etwas ist, das ist unmöglich. Betrachten asiatische Namen mit lateinischen Buchstaben eingegeben; sie können sehr gut auslösen, was Filter Sie kommen mit, sind aber noch völlig legitim.

Sie können nach Mustern suchen, die keinen Sinn machen phonetisch. Wie zum Beispiel:

'q' nicht von einem 'u' gefolgt.

asdf

qwer

zxcv

asdlasd

Im Grunde versuchen auf eigene Tastatur Maischen, sehen, was Sie bekommen, und schließen Sie, dass in Ihrem Filter. Auch Plug in verschiedenen grammatikalischen Regeln. Da es jedoch Namen mit dir zu tun haben, werden Sie immer bekommen ‚dass Guy‘ mit dem seltsamen Namen, die eine falsche positive verursachen.

Anstelle von regulären Ausdrücken, warum nicht nur mit einer Liste von bekannten guten Werten vergleichen? Zum Beispiel, vergleichen, Mädchennamen der Mutter mit Volkszählungsdaten oder Kosenamen mit einem der Kosenamen Listen, die Sie online finden können. Für eine viel einfachere Version dieser, einfach eine Google-Suche nach was auch immer eingegeben wird. Legitime Namen sollten viele Ergebnisse haben, während Tastatur Maischen in der seltensten wenn überhaupt führen sollte.

Wie bei jedem anderen Verfahren, werden Sie noch Fehlalarme behandeln müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top