|
|
|
 |
 |
|
SQL-Injections mit
mysql_real_escape_string verhindern
|
Als SQL-Injections bezeichnet man
Angriffe auf eine SQL-Query bei der Werte eingeschleusst werden,
die vom Webseitenbetreiber eigentlich so nicht vorgesehen waren.
Nehmen wir an, wir haben folgende Beispielhafte SQL-Query:
$query = "SELECT * FROM users WHERE user='$user' AND password='$password'";
Nun könnte ein Angreifer ins
Formularfeld Password den String ' OR 1=1' eingeben, um sich als
admin einzuloggen. Was würde
aus der Query dann werden? Sie lautete:
SELECT * FROM users WHERE user='admin' AND password='' OR
1=1'
Weil 1=1 immer wahr
ist würde SQL die Bedingung also als erfüllt ansehen und dem
Nutzer das einloggen erlauben. Hier kommt mysql_real_escape_string
ins Spiel.
Eine Query, deren Eingaben mit
mysql_real_escape_string maskiert worden sind, bietet diese
Angriffsgefahr nicht! So zum Beispiel:
$query = "SELECT * FROM users WHERE user='".mysql_real_escape_string($user)."' AND password='".mysql_real_escape_string($password)."'"; |
|
|
|
|
 |
|
|