Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia Tuesday TopDrive KupDnes Navrcholu Bomba NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Vlákno názorů k článku
Na podceňovanou hrozbu SQL injection doplácí i řada českých webů

Ra100
Ra100 (neregistrovaný)
10. 6. 2008 7:59

Jazyk

> 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.
Daniel Dočekal aura:99
10. 6. 2008 8:10

Re: Jazyk

V čempak že to je napsané to Z1.CZ (s ukázkovou SQL injection)? Aha, vona to byla Java :)
M.
M. (neregistrovaný)
10. 6. 2008 8:22

Re: Jazyk

Ra100 tym chcel povedat, ze vyukove materialy nabadaju k pouzitiu prepared statementov. Pokial je vsak programator nedosledny a lenivy, tak to moze pisat v com chce a nikto mu nezabrani to napisat nespravnym sposobom.
Jakub Suchy aura:83
10. 6. 2008 8:35

Re: Jazyk

Takze vlastne SQL Injection nema nic spolecneho s jazykem, ve kterem je stranka napsana :)
Petr
Petr (neregistrovaný)
10. 6. 2008 8:47

Re: Jazyk

To je stejné, jako se hádat, zda memory (resource) leaky souvisejí s jazykem. Některé jazyky to dělají snazší a některé těžší, ale možné je to ve všech.
lukas
lukas (neregistrovaný)
10. 6. 2008 10:04

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.
Daniel Dočekal aura:99
10. 6. 2008 8:54

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á :)
stoural
stoural (neregistrovaný)
10. 6. 2008 8:54

Re: Jazyk

A myslis, ze vyukove materialy k ASP.NET ci PHP nenabadaji ke stejne veci? Proste, co to tvrdis, je nesmysl :)
Tomas
Tomas (neregistrovaný)
10. 6. 2008 9:07

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.
N/A
N/A (neregistrovaný)
10. 6. 2008 10:48

Re: Jazyk

treba tu dokumentaci ctou :-).
ale takovym tim zpusobem "sakra, jak se pouzivaji ty parametry? ... tady nekde byl priklad!" ;-)
polygon
polygon (neregistrovaný)
12. 6. 2008 0:11

Re: Jazyk

Nj vecny problem lamerskych programatoru. Kdyby vsichni dusledne pouzivali orm misto na kolene skladanych sql stringu tak problem sql injection neexistuje.
mofo
mofo (neregistrovaný)
10. 6. 2008 10:03

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š
Miloš (neregistrovaný)
10. 6. 2008 19:07

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.
Karuč
Karuč (neregistrovaný)
10. 6. 2008 11:45

Re: Jazyk

Tak tak.
sejc
sejc (neregistrovaný)
11. 6. 2008 7:38

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.
Zasílat nově přidané příspěvky e-mailem