En ting der er værd at tænke over er sql-injections
hvis man f.eks bruger noget lignende
$query = "SELECT id FROM users WHERE username='$user' AND password='$pass'";
$res = mysql_query($query);
til at validere en bruger med ($user og $pass hentet fra brugerinput, f.eks $_POST)
hvis en bruger så taster
ha'sh
ind i brugernavn, vil sql-kommandoen blive
SELECT id FROM users WHERE username='ha'sh' AND password='etellerandet'
og give syntaxerror near sh'
Det er måske ikke så slemt, går kun ud over brugeren selv, men hvis mysql_query() fyrer strengen af mod mysql som om den kom fra en kommandolinie, og brugeren skrev
The reason for this is that the insertion of the 'single quote' character 'breaks out' of the single-quote delimited data. The database then tried to execute 'hn' and failed. If the attacker specified input like this:
ha'; drop table users--
så vil kommandoen blive
SELECT id FROM users WHERE username='ha'; drop table users--' AND password='etellerandet'
og da ; afslutter en sqlstatement og man via kommandolinie kan fyre flere sqlstatements af i en linie, adskilt af ; ....
dette er et tænkt og uafprøvet eksempel, han skal selvfølgelig gætte tabelnavnet users, men en tanke værd, der er måske nogle som er mere opfindsomme
denne er måske værd at kigge på
http://dk.php.net/manual/en/function.mysql-escape-string.phpdet er måske også værd at overveje at have 2 mysql-brugere med forskellige rettigheder, og så connecte med den ene for til administrative formål og den anden i andre tilfælde