ProgramováníPočítačInternetBlog

SQL injection

SQL injekce.

SQL injekce je vlastně vložení vlastního kódu, pomocí neošetřených vstupů

Představíme si, že máme tabulku accounts obsahující login a password.
Uživatel zašle data pomocí přihlašovacího formuláře a my zpracujeme jeho dotaz pomocí tohoto kódu

mysql_query("select accounts.id from accounts where 
  accounts.login='$_POST[login]'
  and accounts.password='$_POST[password]' limit 1
");

Nyní si představíme, jak bude vypadat SQL dotaz, po dosazení proměnných login za 'pepa' a password '123456'

mysql_query("select accounts.id from accounts where 
  accounts.login='pepa'
  and accounts.password='123456' limit 1
");

Stále se zde nevyskytuje problém, ten však nastává, až když za obě proměnné dosadíme ' or '1'='1. Poté bude výsledek vypadat takto:

mysql_query("select accounts.id from accounts where 
  accounts.login='' or '1'='1'
  and accounts.password='' or '1'='1' limit 1
");

Takto se útočník přihlásí hned na první účet, na který bude testována podmínka. První účet obvyklé bývá od správce webu.

Obrana

Obrana je jednoduchá. Stačí vstupní hodnoty kontrolovat pomocí různých funkcí. Třeba pro PHP můžeme využít funkce mysql_real_escape_string()

Tagy:
hackinjectiondatabáze
Podobné:
Minecraft helper: ÚvodMinecraft helper: ÚvodObnova wifi klíče z WindowsObnova wifi klíče z WindowsMinecraft helper: TeleportaceMinecraft helper: TeleportaceMinecraft helper: ŠermMinecraft helper: ŠermMinecraft helper: OSDMinecraft helper: OSD

Komentáře:

Jméno:
Vzkaz:
Jste člověk?Ano Ne
oscar 28. 10. 2012 07:42 cs
jak pouzit hack do multiplayer
eXhAiL 31. 12. 2010 16:51 cs
Opravdu to funguje. Thx
Anonym 13. 12. 2010 14:38 cs
dekuju hned to vyskousim
Zbyněk 10. 12. 2010 20:02 cs
Pokud máš nějaké přihlášení, nebo kontrolní kód, můžeš zkusit do kolonky pro heslo. Pokud to nefunguje, tak se nediv. Avšak jsou i weby, kde by to člověk očekával zabezpečené a není.
Anonym 10. 12. 2010 14:20 cs
ahoj a kde to mam napsat?