Antwort
 
Themen-Optionen
Alt 05.07.2007, 13:52 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 02.07.2006
Beiträge: 22
Standard Passwortsicherheit ermitteln via Ajax

Hallo,
bei der Vergabe eines neuen Passworts wird dieses automatisch auf Sicherheit geprüft und mittels einer Ajax Abfrage an ein PHP Scirpt gesendet.

Code:
  function sendRequest() {
 var param = document.getElementById('user_password').name + '=' + document.getElementById('user_password').value;
   XMLHttpRequest.open('POST', 'index.php?ajax_script=password_secure', true);
    XMLHttpRequest.onreadystatechange = handleResponse; 
    XMLHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    XMLHttpRequest.send(param);
  }
Allerdings finde ich dieses sehr unsicher, da das Passwort unverschlüsselt an das PHP Script übertragen wird. Ist dieses evtl. anders machbar?
Wie kann ich außerdem "index.php" durch die aktuelle Datei ersetzen ohne die PHP Varaible PHP_SELF zu nutzen?

Geändert von mano (05.07.2007 um 13:54 Uhr).
mano ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2007, 14:03 Nach oben    #2
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 298
Standard

SSL nutzen
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2007, 14:05 Nach oben    #3
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
Standard

Zitat:
Zitat von Bleistift Beitrag anzeigen
SSL nutzen
Ne alternative gibts nicht wirklich, wenn du das Formular abschickst, wird es ja auch unverschlüsselt geschickt.
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2007, 14:18 Nach oben    #4
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.211
Standard

Eine Alternative könnte ich mir vorstellen, wenn du was mit JS programmierst, dass das auf dem client gecheckt werden kann - und es dann mit SSL übertragen wird.

Allerdings schliesst das eine Prüfung auf dem Server damit nicht aus, weil auch eine Lösung ohne JS existieren sollte.
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2007, 14:30 Nach oben    #5
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Was willst du eigentlich machen? Die "Stärke" des Passworts herausfinden und ggf. eine Meldung ausgeben, dass man doch noch ein Sonderzeichen o.Ä. in das Passwort mit aufnehmen sollte?

Wenn ja, kannst du ja auch einfach via AJAX jedes Zeichen einzelnd untersuchen und in einer Flag-Variablen speichern, ob gewisse Voraussetzungen schon erfüllt sind, also z.B. Buchstaben = true/false, Ziffern = true/false, Sonderzeichen = true/false.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2007, 14:31 Nach oben    #6
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 519
Standard

Zitat:
Zitat von mano
Allerdings finde ich dieses sehr unsicher, da das Passwort unverschlüsselt an das PHP Script übertragen wird.
Auch ohne Ajax wird das Passwort unverschlüsselt übertragen, wenn du kein SSL benutzt.

Zitat:
Zitat von Jann Hendrik Beitrag anzeigen
Eine Alternative könnte ich mir vorstellen, wenn du was mit JS programmierst, dass das auf dem client gecheckt werden kann
jo, das wäre ne eine einfache möglichkeit zumindest die anzahl der übertragungnen zu vermindern. einfach die überprüfung per javascript auf dem client durchführen, also das php script nach javascript übersetzen.
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2007, 14:36 Nach oben    #7
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 298
Standard

Zitat:
Zitat von $traight-$hoota Beitrag anzeigen
jo, das wäre ne eine einfache möglichkeit zumindest die anzahl der übertragungnen zu vermindern. einfach die überprüfung per javascript auf dem client durchführen, also das php script nach javascript übersetzen.
Dann kann er aber nicht prüfen, ob das PW = dem alten PW ist... Bzw. er kann schon. Allerdings müsste er es dann Plaintext ausliefern (oder sich eine MD5-Funktion für JS bauen)
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2007, 16:41 Nach oben    #8
Neuer Benutzer
 
Registriert seit: 02.07.2006
Beiträge: 22
Standard

Zitat:
Was willst du eigentlich machen? Die "Stärke" des Passworts herausfinden und ggf. eine Meldung ausgeben, dass man doch noch ein Sonderzeichen o.Ä. in das Passwort mit aufnehmen sollte?
Es wird damit die Stärke des Passworts ermittelt. Ich hatte einfach gedacht, dass es vielleicht noch eine bessere Möglichkeit gibt um Daten zu übertragen.
Mein interner Bereich wird bereits über eine SSL Verschlüsselung aufgerufen.
mano ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2007, 18:39 Nach oben    #9
Neuer Benutzer
 
Registriert seit: 23.06.2007
Beiträge: 13
Standard

Ja es gibt da ein paar Scripten im Internet und auch eigene Frameworks die einen HASH vom Passwort am Client berechnen und dann an ein Script auf der Serverseite senden.
Das wäre dann natürlich Bomben fest.

MfG Peter
pmayer ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2007, 18:59 Nach oben    #10
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
Standard

Zitat:
Zitat von pmayer Beitrag anzeigen
Ja es gibt da ein paar Scripten im Internet und auch eigene Frameworks die einen HASH vom Passwort am Client berechnen und dann an ein Script auf der Serverseite senden.
Das wäre dann natürlich Bomben fest.

MfG Peter
Versteh ich das so, Hash steht in der Datenbank , User gibt das Passwort ein JS wandelt in Hash um, heißt wenn ich mein Login manipulieren will brauch ich "nur" den hash, was es ja nicht wirklich schwerer oder einfacher macht im Bezug auf das System oder ?
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2007, 20:40 Nach oben    #11
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 519
Standard

Zitat:
Zitat von pmayer Beitrag anzeigen
Ja es gibt da ein paar Scripten im Internet und auch eigene Frameworks die einen HASH vom Passwort am Client berechnen und dann an ein Script auf der Serverseite senden.
Das wäre dann natürlich Bomben fest.
das ist vor allem bombesicher, weil der code zum verschlüsseln in javascript geschrieben von jedem eingesehen und nachgebaut werden kann.
also für eine "sichere übertragung" ist das nix.
man kann ein solches system nur verwenden wie von Bleistift ja schon beschrieben, um ein hash des ausgewählten passwords mit dem gespeicherten hash zu vergleichen:
Zitat:
Zitat von Bleistift
Dann kann er aber nicht prüfen, ob das PW = dem alten PW ist... Bzw. er kann schon. Allerdings müsste er esdann Plaintext ausliefern (oder sich eine MD5-Funktion für JS bauen)
das problem dabei ist aber, dass man theoretisch beliebige hashes an den server schicken kann und wenn der dann meldet "passwörter identisch", hat man auch schon das passwort geknackt. LOL.
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.07.2007, 08:27 Nach oben    #12
Martin Eisengardt
 
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
Standard

Um sowas zum umgehen habe ich bei mir grundsätzlich einen Zähler eingebaut. Innerhalb von einer Minute darf man z.B. nur 5 mal falsch eintippen (konfigurierbar), alles weitere wird stillschweigend als Fehler ausgewiesen. Damit kann man so manche Bots kräftig in die Irre treiben und die Wahrscheinlichkeit erhöhen, dass sie das Passwort nicht mehr automatisiert knacken. Sie haben dann einfach kaum noch Durchsatz bei der Prüfung und wenn sie um diese Sicherheit nicht wissen, könnten gültige Passwörter abgewiesen werden.

Nur darum gehts: Die Hemmschwelle erhöhen. Einfache Methoden ausschließen. Eine hundertprozentige Sicherheit ist unmöglich. Einfache Regeln:

1. Niemals an den Client was ausliefern, weder Hashes, noch verschlüsselte Passwörter, noch Klartext. Weder in Cookies noch sonstwo.

2. Im Grunde ist auch das Speichern von Benutzername/Passwort in einer Session böse. Von einem Auto-Login des Benutzers sollte man Abstand nehmen und wenn man es doch will, den Benutzer darauf hinweisen, dass es gefährlich sein könnte (Vorbild zum Beispiel die Login-Box bei heise.de)

3. Validierungsprüfungen sollten nur von einem PHP-Skript ausgeführt werden, dass Ja/Nein zurückgibt. Es sollte nie die Möglichkeit geben, das Passwort direkt rauszufinden. Selbst eine Passwort-Vergessen-Seite sollte immer nur in neues Kennwort generieren.

4. SSL und vielleicht eine leichte Verschlüsselung/Verfälschung durch den Client reichen IMHO aus. Der Rest ist Humbug. Jemand, der sich die Mühe macht, sich in die Seite zu hacken per XSS, Netzwerk o.ä., so dass er die Übertragung belauschen kann, den machen Verschlüsselungen keine Mühe.
__________________
Open Sourcing the Online Gaming Universe
PHP/SQL/Java/C++/Assembler.
Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html
mepeisen ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[AJAX] Eine Einführung in AJAX und XMLHttpRequest Jay Tutorials 1 08.12.2006 16:21
Ajax für Terminübersicht / Onlineuser mano JavaScript und AJAX 23 05.12.2006 18:05
Unterschiede JavaScript und AJAX ibs Sonstige Programmiersprachen 13 13.04.2006 07:41
AJAX Theme Engine für Wordpress PaterNoster Plauderecke 0 17.11.2005 21:48
PHP Upload-Status + AJAX? Chr!s PHP-Programmierung 13 12.11.2005 15:51


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:35 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44