> Je důležité si uvědomit i to, že SQL injection nemá nic společného s jazykem, ve kterém je webová aplikace napsaná
Tak s tymto by som dost nesuhlasil aj ked dovody nie su technicke, ale socialne.
Vsetci Javovsky programatori uz od zakladnych tutorialov vedia, ze SQL string sa nema vyskladavat z textov co zadava uzivatel, ale maju pouzivat PreparedStatement, teda posielat parametre do SQL. Dokonca niektore nastroje na staticku kontrolu kodu na tuto chybu upozornuju ( FindBugs ) .
Pravdupovediac, rovnako sa to da osetrit v PHP alebo ASP, ale z mne neznamych dovodov na to tie lamy kaslu.
Vlákno názorů k článku
Na podceňovanou hrozbu SQL injection doplácí i řada českých webů
10. 6. 2008 8:10
Nový
Re: Jazyk
V čempak že to je napsané to Z1.CZ (s ukázkovou SQL injection)? Aha, vona to byla Java :)
10. 6. 2008 8:35
Nový
Re: Jazyk
Takze vlastne SQL Injection nema nic spolecneho s jazykem, ve kterem je stranka napsana :)
lukas (neregistrovaný)
10. 6. 2008 10:04
Nový
Re: Jazyk
Taky bych to takhle videl. Dalsi vec je take to, ze kdyz uz nekdo programuje neco v jave, jedna se zpravidla o vetsi vec, ve ktere uz se pouzivaji objektove-relacni mapovaci frameworky jako je ibatis nebo hibernate, kde se pouzivaji prepared statementy, jak psal kolega prede mnou.
10. 6. 2008 8:54
Nový
Re: Jazyk
No, výukové materiály k ASP taky dlouhé roky nabádaji k použití něčeho, co stejně nikdo pořádně nepoužívá :)
Tomas (neregistrovaný)
10. 6. 2008 9:07
Nový
Re: Jazyk
Ono je tezke potkat dokumentaci k SQL API v libovolnym jazyku, kde by k tomu nenabadali;)
Vetsinou jeste uvednou priklad jak se to nema delat, aby zduraznili mozny bezpecnostni problem, ale jak je vedit spousta "programatoru" tu dokumentaci necte a nema ani tuseni ze neco takovyho hrozi.
A neni to jen SQL-injection ale bezpecnostim otazkam vubec spousta lidi nevenuje pozornost, a podle toho ty weby vypadaj.
Vetsinou jeste uvednou priklad jak se to nema delat, aby zduraznili mozny bezpecnostni problem, ale jak je vedit spousta "programatoru" tu dokumentaci necte a nema ani tuseni ze neco takovyho hrozi.
A neni to jen SQL-injection ale bezpecnostim otazkam vubec spousta lidi nevenuje pozornost, a podle toho ty weby vypadaj.
mofo (neregistrovaný)
10. 6. 2008 10:03
Nový
rozpálená kamna
prosímvás, nepřebrat cokoliv přímo z parametrů je stejná zásada jako nepokládat holou ruku na rozpálený kamna. toto je zásada kterou jsem se velmi záhy naučil před dávnými lety při psaní cgi v shellu - to je aspoň prasárna ;-) - a platí pro všechno programování v čemkoliv a čehokoliv. pokud toto někdo nedodržuje, neumí programovat.
Miloš (neregistrovaný)
10. 6. 2008 19:07
Nový
Re: rozpálená kamna
Kontrola vstupních dat se musí provádět vždy a u každého programu Pro programátora by měla být naprostou samozřejmostí . Vzpomínám si, že u některých programů představovala validace dat i více než 50% práce. (To ještě nebyly k mání regulární výrazy). Bohužel - pokud si autor tuto práci ušetří, zákazník to včas nezjistí. A to je ten problém.
Je to šmejd a podvod na zákazníka - asi jako švestková povidla s jablečnou dření nebo špekáčky se sójou. (Tedy něco, co je dnes naprosto běžné - bohužel).
Zvykáme si, že za levný peníz je pouze náhražka - nebo-li předražený šmejd. Nedivme se, že to proniká i do této profese.
Je to šmejd a podvod na zákazníka - asi jako švestková povidla s jablečnou dření nebo špekáčky se sójou. (Tedy něco, co je dnes naprosto běžné - bohužel).
Zvykáme si, že za levný peníz je pouze náhražka - nebo-li předražený šmejd. Nedivme se, že to proniká i do této profese.
sejc (neregistrovaný)
11. 6. 2008 7:38
Nový
Re: Jazyk
Jistě že PreparedStatement je řešení, ale také ne vždy, protože už jsem viděl mnoho DB, kde se spouštěly "stored procedures" s parametrama, ve kterých pak následně byl exec(SQL) nebo sp_execute nebo něco takováho a script na konci stejně injektovaný script spustil, takže pro javu platí stejně jako pro cokoliv ostatního.
Jinak v .NET je DLINQ, v rámci kterého toto opravdu nelze přejít, ale to zase nelze použít vždy.
Jinak v .NET je DLINQ, v rámci kterého toto opravdu nelze přejít, ale to zase nelze použít vždy.