Sicherheitslücken beim Loginscript

bspainkf36

Erfahrenes Mitglied
Hey Leute,

haben vor ein paar Monaten ein Login-Script mit Sessions realisiert und wollte es jetzt mal wieder zum Einsatz bringen. Jetzt wurde ich von einem Freund darauf aufmerksam gemacht, dass ein solches Script auch Sicherheitslücken ausweisen könnte, sprich man gibt beim Benutzernamen " mit ein und hängt beispielsweise eine weiter Sql-Anweisung dran o.ä. ... also man am besten die Post Variablen nach "bösem" Inhalt filtern. Gibt es Methoden, die einem php vorgibt? Sollte ich eventuell auf weiter Sicherheitslücken gefasst sein ? Es ist mir schon klar, dass ein Script nie zu 100% sicher sein wird, jedoch hat eine Tür auch ein Schloss - und von diesem sollte man auch gebrauch machen! Danke für die Hilfe

Greetz kon
 
Hallo,

Die Methode, bei einem Eingabefeld SQL-Anweisungen mit einzugeben nennt man SQL-Intrusion.

Über diesen Suchbegriff findest Du in Google eine ganze Menge Seiten (leider fast nur in Englisch)

Ob Dein Script für solche Angriffe anfällig ist, kannst Du (mit entsprechender Kenntnis der Syntax) sehr einfach selbst ausprobieren.

Ich habe bisher noch bei keinem meiner Scripte damit Probleme gehabt, obwohl ich beim Programmieren nicht speziell darauf geachtet habe. (Hängt vermutlich an der verwendeten PHP- bzw. MySQL-Version) Prinzipiell kann man aber sagen, daß man möglichst Variablen aus HTML-Formularfeldern nicht direkt in SQL-Anweisungen einbauen sollte. Man sollte Eingaben vorher im Script auf "ungültige Zeichen" prüfen. ;)


Dunsti
 
Öhm so einfach is es auch wieder nicht. Automatisch bzw. Standardmäßg werden nämlich # oder \ etc. einfach entwertet von PHP.

Beispiel:
Formulareingabe '
Ausgabe: \'
 
Ja da hast du recht das das eine Sicherheitslücke sein kann. Prüfe die Eingaben einfach mit regulären Ausdrücken, dann hast du keine Probleme mehr damit.
 
Worauf du auch achten solltest ist, dass mysql_errors nur ausgegeben werden, wenn der User damit auch was anfangen kann oder es nicht missbrauchen kann. Ist nämlich auch ne gern genutzte Lücke, dein Programm zum Absturz zu bringen und denn anhand des Errors, die DB zu filtern. ;)
 
Meiner Meinung nach heist das SQL-Injection. Verhindern kann man das mit folgenden einfachen Mitteln:

- Variablen, die Text beinhalten und in SQL-Statements eingefügt werden, sollten mit [phpf]mysql_escape_string[/phpf] gesichert werden.
- Variablen, die Zahlen beinhalten und in SQL-Statements eingefügt werden, mit [phpf]number_format[/phpf].

@Sicaine: Nur wenn magic_quotes aktiviert ist. und dann auch nur die Zeichen ' " \ und NUL's

Sven
 
Zurück