Stránka 1 z 1

Zabránění SQL a PHP injection

Napsal: stř 20. led 2010, 18:52
od arxeiss
Dělám web kde se strašně hodně hodnot zadaných uživatelem ukládá do DB. Chtěl bych ho co nejvíce ošetřit. Text v URL jsou pouze číselné, to kontroluju.
Zatím mě napadlo v textu nahrazovat ' -> \' "->\" a \ -> \\ před uložením do DB, a na HTML entity nebo jak se tomu říká př & na & apod. Chtěl bych poradit od zkušenějšcíh kde jěště co a jak.
Díky
Myslím že toto bude pro všechny přínosem.

Re: Zabránění SQL a PHP injection

Napsal: stř 20. led 2010, 19:20
od bubanek

Re: Zabránění SQL a PHP injection

Napsal: čtv 21. led 2010, 19:06
od arxeiss
Tu funkci znám, ale nějak nevím co s tím HTML.

Re: Zabránění SQL a PHP injection

Napsal: čtv 21. led 2010, 19:38
od OndraSter
htmlspecialchars je nejjednodušší použít

Re: Zabránění SQL a PHP injection

Napsal: čtv 21. led 2010, 19:57
od arxeiss
Díky, přesně tuto jsem hledal. Jednu mi doporučil kámoš http://www.php.net/manual/en/function.strip-tags.php ale tato jenom vyhodila poznámky. Nebo alespoň jsem to tak pochopil.

btw. Pořádně jsem přečetl to co postnul Bubanek a nejsem z toho moudrý. Chápu to takto
Tento kód

Kód: Vybrat vše

mysql_query("SELECT * FROM tabulka WHERE nazev = '" . mysql_real_escape_string($_GET["nazev"]) . "' OR id = " . intval($_GET["id"]));

nelze použít protože by mohla funkce get_magic_quotes_gpc() to provést, a poté jěště já tou mysql_real_escape_string. takže to ve výsledku bude takto?

Kód: Vybrat vše

function gpc_addslashes($str) {
    return (get_magic_quotes_gpc() ? $str : addslashes($str));
}
mysql_query("SELECT * FROM tabulka WHERE nazev = '" . gpc_addslashes($_GET["nazev"]) . "' OR id = " . gpc_addslashes($_GET["id"]));