Jump to content

Effektive Mittel gegen SQL-Injections?


MWojt
 Share

Recommended Posts

Hi Leute,

ich hörte vor einiger Zeit von SQL-Injections. Ich wollte natürlich meine Webseite dagegen absichern, allerdings weiß ich nicht recht, wie ich das machen soll. Ich habe zwar bereits gesucht, allerdings nur etwas gefunden, das mich gezwungen hätte, übermäßig viel Text zu lesen.

Nun meine Frage: Mit welcher Funktion kann man Variablen am besten "reinigen"? Wenn wir schonmal dabei sind, könnt ihr mir am besten gleich sagen, was man sonst noch für den reibungslosen Ablauf tun muss. Ich würde mich freuen, wenn ihr die Funktionen erklären könntet.

Danke im Vorraus,

MWojt

Link to comment
Share on other sites

Weißt du was eine SQL injection ist? Also ganz salopp gesagt funktioniert sie so: Der Hacker gibt in ein Anmeldefeld (Beispiel) SQL code ein, der geschickt bei der SQL abfrage anstatt desd eigentlichen Codes ausgeführt wird, dieses Ergebnis liefert in Simplen fällen einfach immer "true" (zb , wenn man sagt, dass SELECT user WHERE 1==1 (oder so :3) und damit die Passwortabfrage umgeht), oder sie kann zum Auslesen ganzer Datenbanken genutzt werden.

am einfachsten schützt du dich, indem du im eingegebenen passwortstring ganz einfach alle "gefährlichen" Chars ersetzt (",' Beispielsweise), damit der Code danach nicht mehr injected werden kann.

Und ja, das ist alles sehr Roh da oben, aber es ging mir nicht darum, mein Nerd-Wissen auf die Menschheit loszulassen :P

Link to comment
Share on other sites

Anmeldung via Facebook ist total bescheuert. Ich dachte bloß, es gäbe irgendwelche Funktionen, die einen String dahingehend verändern, dass er keinen Schaden mehr anrichten kann.

Link to comment
Share on other sites

Die Funktionen, die dir helfen, sind unter anderem:

- preg_replace (ersetzt/entfernt alle Zeichen nach einem angegebenen Schema)

- preg_match (prüft, ob bestimmte Zeichen oder Zeichensätze vorhanden sind und gibt je nachdem true oder false zurück)

Wenn du die beiden Funktionen suchst wirst du viele Beispiele finden. Wichtig ist, dass du am besten alle Sonderzeichen herausfilterst. Das heißt: du lässt nur a-zA-Z0-9 zu.

Falls du alle Zeichen brauchst und es daher etwas komplexer brauchst: such nach prepared statements. Mit prepared statements kann man problemlos jede Eingabe erlauben, aber der Angreifer wird ihn nicht ausführen können, weil der Code an seine feste Stelle gebunden ist und auch nicht die SQL-Abfrage beeinflussen oder verändern kann.

Bitte bedenke, dass es neben SQL-Injections noch andere Angriffsmöglichkeiten gibt. So musst du beispielsweise auch Texte von Benutzern, welche du in der Datenbank speicherst und dann auf deiner Internetseite irgendwo ausgibst, über die PHP-Funktion htmlentities() escapen.

Facebook-Logins oder ähnliches sind der völlig falsche Weg und vergraulen viele (potentielle) Benutzer.

Das Thema IT-Sicherheit ist nicht einfach so und ganz schnell abgehandelt. Da ist viel lesen und verstehen nötig. Das was ich dir also beschreibe ist nicht alles worauf du achten musst und es würde den möglichen Umfang meiner Lebenszeit sprengen, das alles zu beschreiben und zu erläutern ;).

Edited by Beefsteakwerfer
Link to comment
Share on other sites

Ich weiß ja nicht ob die Sache hier schon erledigt ist, aber ich geb trotz allem mal meinen Senf dazu:

Bei PHP gibt es folgende Funktionen


$reinerString = mysql_escape_string($unreinerString);

$reinerString = filter_input(INPUT, "name", FILTER);

http://php.net/manual/de/function.mysql-escape-string.php

http://php.net/manual/de/function.filter-input.php

(allgemein ist php.net eine sehr gute Referenz)

Hoffe ich konnte helfen,

idk.php

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...
B
B