Sicheren web-login-Beispiel/tutorial
Es gibt viele Möglichkeiten zum erstellen einer login-Formular für web-apps und die meisten von Ihnen sind fehlerhaft, eine oder andere Weise:
- Passwörter werden übertragen/gespeichert werden als Klartext
- Die login-Dialoge unterliegen XSS-Attacken oder SQL-injection -
Gibt es ein Beispiel oder tutorial, wie man erstellen Sie einen sicheren login-Formular?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stimme ich mit Carlos über den Mangel an "perfekte" Sicheres system, nicht nur für den login, sondern auch für jede andere Komponente. Das einzige, was zu tun ist, um die Risiken zu minimieren, indem Sie die folgenden best practices, aber immer dabei berücksichtigen, dass absolute Sicherheit nicht existiert, also ist deine Frage ziemlich schwierig zu beantworten, es gibt zwar einige gute Beispiele aus es nichts perfekt ist, Sicherheit ist ein sehr schnell sich entwickelnden Thema.
Für mich die wichtigsten Dinge, die zu lösen sind:
-Datenübertragung: Der Benutzer immer ein Kennwort eingeben, und diese werden gesendet zu Ihrem system, bevor es verarbeitet wurde, so gibt es ein hohes Risiko, abgefangen werden, wenn Sie mit einem offenen Kanal. Um dieses Problem zu lösen MÜSSEN Sie den transport der Daten über einen verschlüsselten Kanal (SSL), keine andere Möglichkeit, es sei denn, Sie löschen das gemeinsame Passwort (zum Beispiel mit Hilfe der one-time-Token verwenden, oder das delegieren der Authentifizierung an einen Dritten, wie Facebook connect oder openId). Sehen "Wie man einen Sicheren Login-Formular mit SSL"
-Eingang Sanitär: Zu vermeiden, XSS und SQL-Injection prüfen, jede Eingabe, die von einem client als ein potentiell Risiko-point, so haben Sie, um die Validierung gegen alles, was außerhalb --> doc. Ein weiterer gute Praxis ist, verwenden Sie niemals die Eingänge direkt auf die Abfragen, die Verwendung als bind-Variablen in prepared statements oder stored procedures.
-Passwort-Speicher: Passwort sollte immer verschlüsselt gespeichert werden mit einem one-way-hash-Algorithmus, so dass auch in dem Fall, dass jemand Zugriff auf Ihre DB, es gibt keine Möglichkeit zur Wiederherstellung des ursprünglichen Passwörter. Auch Techniken wie Einsalzen, Hashing, mehrere Male, etc... Auch sorgfältig wählen Sie einen Algorithmus, der nicht schwach oder veraltet (wie MD5), die unterbrochen werden kann durch brute-force leicht mit der Erhöhung der CPU-Leistung.
-Infrastruktur: Haben Ihre Maschinen, OS, frameworks, - Bibliotheken immer aktualisiert, um zu vermeiden, Fehler und 0 day attack. Jedes system ist heute enorm Komplex, und das system ist so sicher wie die schwächste Komponente.
-Andere Dinge zu beachten: Überprüfen Sie Ihre Sicherheits-Richtlinie regelmäßig, um zu sehen, wenn Bedürfnisse update nichts, Umsetzung von Passwort-Richtlinien (Ablauf, Wiederverwendung, etc...), log access, monitoring tools für Ihre Systeme, etc etc etc
Und nach all dem, können Sie trotzdem sicher sein, dass, wenn jemand hat genug Zeit und Ressourcen, Ihr system wird fallen.
Ihre Frage kann nicht sein, dass Agnostiker, und müssen aufgeteilt werden in Ihre zwei Hauptanliegen:
Übertragung von Kennwörtern im Klartext.
Xss, Sql-Injektion.
Kein system erklärt wird, gesichert per se, aber Sie können versuchen Ihr bestes, um die Risiken zu minimieren durch die Verwendung erprobter Konzepte.
Also sagen wir mal Sie haben die chance, gestalten Sie Ihr eigenes "Sicheres system", was Sie tun müssen?
Mindestens benötigen Sie ein Basis-set der Werkzeuge:
Jede Sprache hat eine Art Schutz eingebaut, ist es beim Bau von großen Projekten, die wir vielleicht manchmal vergessen zu desinfizieren sind einige querys
- Ich wiederhole-kein system wird jemals erklärt werden, sicher, aber Sie können hinzufügen, einige andere Sicherheits-Maßnahmen, in:
Vom Bank-Sicherheit:
Ich bin sicher, Sie finden zahlreiche Ratschläge irgendwo, aber denken Sie daran, Sie am Ende wird Ende reden, html und etwas js, Ihre wichtigsten Verteidigung ist auf der server-Seite, so gut sein, oder gut sein.