K útokům SQL injection dochází při vstupu uživatele je nesprávně zakódováno. Vstupem uživatele jsou obvykle data, která uživatel odešle se svým dotazem, tj. hodnoty v $_GET
, $_POST
, $_COOKIE
, $_REQUEST
nebo $_SERVER
pole. Uživatelské vstupy však mohou pocházet také z různých dalších zdrojů, jako jsou zásuvky, vzdálené webové stránky, soubory atd.. Proto byste měli skutečně zacházet se vším kromě konstant (jako 'foobar'
) jako uživatelský vstup .
V kódu, který jste zveřejnili, je mysql_real_escape_string
se používá ke kódování (=escape) uživatelských vstupů. Kód je tedy správný, tj. neumožňuje žádné útoky SQL injection.
Pamatujte, že je velmi snadné zapomenout na volání mysql_real_escape_string
- a jednou stačí pro zkušeného útočníka! Proto možná budete chtít použít moderní CHOP
s připravenými prohlášeními
místo adodb.