Bylo by tomu tak, pokud do zveřejněného name
neuvedete jednoduché uvozovky , což vám umožní vymanit se z uvozovek. Příklad zadejte název jako:
' or 1 or '
Klauzule WHERE se stává:
WHERE id = '' or 1 or '';
To by odpovídalo a načetlo všechny řádky v tabulce kvůli or 1
část. Jak můžete vidět, vylomí se z uvozovek, aby vložil nějaké SQL, pak se vrátí do uvozovek, aby byl dotaz platný.
Ne, ale pokud byl spuštěn pomocí mysqli_multi_query
pak ano, můžete přidat více dotazů na konec.
Obecně ano, ale lepší by bylo připravené prohlášení. Pomocí escapování WHERE
klauzule by se stala (s použitím mého příkladu výše):
WHERE id = '\' or 1 or \'';
Toto již není zranitelné, protože uvozovky nelze vylomit a řádky by se shodovaly pouze v případě, že name
doslova odpovídá ' or 1 or '
což je zjevně nepravděpodobné.