sql >> Databáze >  >> RDS >> Mysql

Dotaz na injekci MySQL

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é.



  1. vzorec haversine php / mysql

  2. MySQL Porozumění základním spojením

  3. SQL Data Manipulation Language

  4. Jak najít chybějící řádky (data) v tabulce mysql?