Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann verhindert werden, dass jemand den Bestätigungscode klaut?

Wie kann verhindert werden, dass jemand den Bestätigungscode klaut?

WBOY
WBOYOriginal
2016-10-19 10:40:521480Durchsuche

Die vom Pit-Produkt entwickelte Registrierung/Anmeldung kann den Mobiltelefon-Verifizierungscode erhalten, es gibt jedoch keinen grafischen Bestätigungscode. Und jetzt wurde unsere Schnittstelle zum Erhalten von Bestätigungscodes viele Male geklaut. In der letzten Stunde gab es Tausende von Anfragen, und sie kamen alle von unterschiedlichen IPs und unterschiedlichen Mobiltelefonnummern....

Bitte geben Sie mir einen Ratschlag, zusätzlich zum Hinzufügen eines grafischen Bestätigungscodes. Wie kann ich das Wischen verhindern?

Antwortinhalt:

Die vom Pit-Produkt entwickelte Registrierung/Anmeldung kann den Mobiltelefon-Verifizierungscode erhalten, es gibt jedoch keinen grafischen Bestätigungscode. Und jetzt wurde unsere Schnittstelle zum Erhalten von Bestätigungscodes viele Male geklaut. In der letzten Stunde gab es Tausende von Anfragen, und sie kamen alle von unterschiedlichen IPs und unterschiedlichen Mobiltelefonnummern....

Bitte geben Sie mir einen Ratschlag, zusätzlich zum Hinzufügen eines grafischen Bestätigungscodes. Wie kann ich das Wischen verhindern?

Alles, was mir einfällt, außer dem grafischen Bestätigungscode:

  1. Basierend auf der Mobiltelefonnummer können maximal N Verifizierungscodes pro Mobiltelefon und Tag gesendet werden. Es scheint, dass LZ dies bereits hinzugefügt hat.

  2. Beschränken Sie jede IP basierend auf der IP auf das Senden von bis zu N Bestätigungscodes pro Tag ... -- Nachteil: Normale Benutzer können leicht versehentlich getötet werden, mit Vorsicht verwenden

  3. [Ultimative Methode] Basierend auf Big-Data-Analyse des Benutzerverhaltens

Wie analysiert man anhand des Benutzerverhaltens? Ich habe mir eine einfache Methode überlegt:

Zuallererst sollten normale Benutzer zusätzlich zum Senden der Bestätigungscode-Anfrage auch auf andere Ressourcen auf der Seite zugreifen, wie z. B. CSS/JS/HTML/Bilder usw.

Wenn es sich jedoch um einen Pinsel handelt, kann er möglicherweise nicht gezielt auf diese Ressourcen zugreifen.

Wenn der Benutzer also auf die Seite zugreift, kann ein human-Parameter in session aufgezeichnet werden, und wann immer der Benutzer eine Ressource auf der Seite anfordert, wird dies human = 1 sein. Wenn die Schnittstelle den Bestätigungscode sendet, nehmen Sie den Parameter human heraus und prüfen Sie, welchen Wert er hat. Für einen normalen Benutzer sollte der Wert human größer als ein bestimmter Wert sein (z. B. 5). ist weniger als nur der Pinsel. (Das für 0 ist definitiv ein Pinsel)


Was ich gesagt habe, ist relativ einfach: Sie können die Intervalle zwischen mehreren Anfragen, die Bewegungsbahn der Maus vor dem Klicken auf die Anmelde- oder Registrierungsschaltfläche, den Zeitpunkt, zu dem die Maus gedrückt und geschlossen wird, usw. aufzeichnen. analysieren.

Es wäre großartig, wenn Sie ein reCAPTCHA wie das von Google zitieren oder kopieren könnten – das Personen oder Maschinen mit nur einem Klick automatisch identifiziert.

Wie New Wolf Microwave~ Nur wenn Benutzername und Passwort vorhanden sind, wird das Bestätigungspferd gesendet.


Das Problem besteht darin, dass die Funktion zum Anmelden über den Mobiltelefon-Verifizierungscode definitiv kein Passwort hinzufügen kann. Sie können das registrierte Passwort beiläufig eingeben, es bedeutet nicht viel

@locatejoe

Anstatt das Passwort anzuzeigen, werden Benutzername und Passwort als MD5-Werte übernommen, zusammengefügt, gehasht und einem Filter ähnlich wie BloomFilter zugeordnet. Wenn
bloomFilter 不存在 zurückgibt, wird das Verifizierungspferd nicht gesendet.
bloomFilter nimmt nicht viel Platz ein und ist sehr schnell.

Dieses Problem ist schon einmal aufgetreten

Mehr als 20.000 Nachrichten wurden in 2 Tagen hochgeladen

Lösung:

1. Grafischen Bestätigungscode hinzufügen
2. Bestimmen Sie, dass dieselbe IP und dasselbe Mobiltelefon nur 3 Nachrichten in einem Zeitraum senden können (obwohl dies nicht freundlich ist)
3. Bestimmen Sie die Sendezeit für Textnachrichten Innerhalb von 30 Minuten ist es immer noch dasselbe. Eine Mobiltelefon- und IP-Adresse wird nicht gesendet

Jedenfalls gibt es viele Möglichkeiten. Probieren Sie es einfach aus

Wenn es sich um eine andere IP- und Mobiltelefonnummer handelt, können Sie den grafischen Bestätigungscode hinzufügen. . .

  • Fügen Sie einen grafischen Bestätigungscode hinzu und achten Sie darauf, dass die Schriftfarbe nicht zu einfarbig ist.

  • Nachdem eine Textnachricht gesendet wurde, muss es ein Intervall geben, das vom Front-End-Cookie beurteilt und separat in PHP gespeichert wird

  • Die Schnittstelle muss die angeforderte IP-Adresse und Mobiltelefonnummer ermitteln. Das Zeitintervall vom letzten Mal ist zu kurz und das Senden ist nicht zulässig

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn