Et andet eksempel er at du kan bruge htmlentities, som følgende:
Nej, brug
ikke htmlentities() mod SQL injections!
mysql_real_escape_string() er ikke nok i sig selv, det afhænger også af, hvordan din SQL sætning er skruet sammen.
Forestil dig nedenstående scenario:
- $username = 'test OR 1=1;';
-
- $username = mysql_real_escape_string($_POST['username']);
- $password = mysql_real_escape_string($_POST['password']);
- $sql1 = "SELECT * FROM users WHERE username = $username AND password = $password";
- $sql2 = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$sql2 vinder.
edit: rettet eksemplet, da tidligere eksempel var dbms specifikt. Dette er lidt mere generisk.
En god idé ville være, at læse op på prepared statements.
Indlæg senest redigeret d. 10.04.2012 19:23 af Bruger #955