htmlspecialchars - escapuje value pro html
bindValue - escapuje value pro pdo (a nejspis to dela i to execute, ja to resim trochu jinak); nemusis pouzit bindvalue, pokud to escapujes jinym zpusobem, coz se ve skole ale moc nedela
urlencode - escapuje value pro url (dalsi pr jine funkce)
Pouziti
$x = 'xxx</b>yyy';
echo '<b>'.$x.'</b>'; // html injection, B tag se ukonci predcasne
echo '<b>'.htmlspecialchars($x).'</b>';
$y = 'aaa&bbb=1&ccc=2>"';
echo '<a href="stranka.php?bbb=2&aaa='.$y.'">odkaz</a>'; // url + html
//injection, html se ti ukonci nejspis pres > nebo retezec uvozovkou "
echo '<a href="stranka.php?bbb=2&aaa='.htmlspecialchars(urlencode($y)).'">odkaz</a>'
$z = '1 OR 1=1';
$query = 'DELETE FROM tab WHERE id='.$z; // sql injection, smaze ti to vsechny radky tabulky
$zz = '" OR 1=1 OR 1="';
$query = 'DELETE FROM tab WHERE name="'.$zz."'; // sql injection, smaze ti
// to vsechny
DELETE FROM tab WHERE id=1 OR 1=1 // id=1 neplati, 1=1 plati, mezi tim je
//operace OR, podminka je vzdy true, takze delete plati pro vsechny radky
DELETE FROM tab WHERE name="" OR 1=1 OR 1="" // totez, name='' neplati, 1=1
//plati, 1='' neplati, ale mezi podminkami je Or, takze je to rue a opet to
//smaze vsechny radky tabulky
//A kdyz je to SELECT, tak ti tam hacker da takovou podminku, aby to
//zobrazilo tabulku seznamu uzivatelu. Pokud nemas v db hesla sifrovana,
//tak potes kokes
:)
Nekdy je ale pripad, ze tam chces prave mit ten sql dotaz. Jen ho nesmi zadavat uzivatel. Nebo by to mel delat aspon pres heslo.