Jump to content

Effektive Mittel gegen SQL-Injections?


MWojt

Empfohlene Beiträge

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 ;).

bearbeitet von Beefsteakwerfer
Link zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...
B
B