var SectionTitles=new Array( "HTML problΘm : cizφ k≤d a formulß°e" );
var SectionURLs=new Array( "110" );
var BrothersNames = new Array("BezpeΦnost a autorizace na WWW I. : protokol HTTP","BezpeΦnost a autorizace na WWW II.","HTML problΘm : cizφ k≤d a formulß°e","PφÜeme bezpeΦnou webovou aplikaci - dφl 1.","K php upload bug zve°ejn∞n exploit, Apache + mod_ssl","Zßkladnφ obrana proti p°evzetφ domΘny na stran∞ klienta","");
var BrothersIDs = new Array("32","33","110","122","154","155","");
//=====INFO======
ItemName='Article110';
InIFrame='No';
TableNum=2;
ItemID=110;
ArticleType='1';
Action='articles'
ItemTitle='HTML problΘm : cizφ k≤d a formulß°e';
ItemComment='HTML problΘm : cizφ k≤d a formulß°e';
Intro('Na mnoha strßnkßch internetu se spoleΦn∞ s logovacφm formulß°em objevuje i cizφ k≤d (externφ javascript apod...) a to p°edevÜφm v podob∞ r∙zn²ch v²m∞nn²ch reklamnφch systΘm∙, poΦφtadel apod. V dneÜnφm Φlßnku bych cht∞l poukßzat na mo₧nß bezpeΦnostnφ rizika takovΘhoto spojenφ.');
Prvky formulß°e jsou nezbytnou souΦßstφ snad vÜech webov²ch aplikacφ. Z bezpeΦnostnφho hlediska nßs zajφmajφ p°edevÜφm dva objekty (äINPUTYô) a to FILE a PASSWORD (jednß se o hodnoty TYPE tagu INPUT v HTML). Navrhuji tedy, si zb∞₧n∞ projφt jejich vlastnosti. Pomocφ objektu typu FILE m∙₧ete nahrßt na server soubor. WWW prohlφ₧eΦ vytvo°φ vstupnφ textbox pro zadßnφ lokßlnφ cesty k souboru a vedle n∞ho v₧dy tlaΦφtko äProchßzetô, kterß vßm dovolφ pat°iΦn² soubor vybrat. Tento objekt nem∙₧e mφt implicitnφ hodnotu. Pokud ji zadßte, bude ignorovßna.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Druh²m problematick²m objektem je input typu password. Funguje podobn∞ jako input typu text, ale mφsto pφsmenek se nßm zobrazujφ hv∞zdiΦky. Kdysi jsem v jednΘ knφ₧ce o HTML, Φetl, ₧e z bezpeΦnostnφch d∙vod∙ je obsah tohoto textboxu pro javascriptovΘ reference typu document.form.password_input.value takΘ nahrazen hv∞zdiΦkami, navφc ₧e se nßvratovΘ hodnoty udßlostφ onkeydown, onkeyup apod. m∞nφ takΘ na hv∞zdiΦky, pokud probublajφ z objektu password (majφ vracet k≤d stisknutΘ klßvesy). Snad je tomu tak podle specifikace, nicmΘn∞ jakΘ bylo moje p°ekvapenφ, kdy₧ bez problΘm∙ fungoval nßsledujφcφ javascript:
RegulΘrnφ logovacφ formulß° je ten naho°e, vÜe ostatnφ bylo do strßnky p°idßno °ekn∞me ät°etφ stranouô. Formulß° pod nφm je ve skriptu pouze na ukßzku : p°i psanφ hesla (ähv∞zdiΦekô) do hornφho formulß°e se heslo objevuje v otev°enΘ podob∞ ve formulß°i spodnφm. Podstatn∞jÜφ je tag IMG s obrßzkem savepass a druhß °ßdka javascriptu. Pomocφ t∞chto dvou v∞cφ a server-side skriptu save.php je mo₧nΘ heslo bez problΘm∙ odchytit (pravda, lepÜφ by mo₧nß bylo to pov∞sit na odeslßnφ formulß°e).
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Parametry FOR a EVENT podporuje pouze Explorer (°φkß se tφm, ₧e script je pro udßlost keydown objektu document), pro jin² prohlφ₧eΦ by bylo nutnΘ skript trochu upravit. NicmΘn∞ i v Mozille jde k heslu p°istupovat stejn²m zp∙sobem. (Testovßno na IE 5.5 a Mozille 0.9.6).
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
To p°edstavuje bezpeΦnostnφ problΘm a to äv∞tÜφ ne₧ mal²ô. Budu vßm vyprßv∞t krßtk² p°φb∞h. Pan Novßk mß server, na kterΘm poskytuje urΦitou slu₧bu, pou₧φvajφcφ www logovßnφ. ╪ekn∞me n∞jakou elektronickou pen∞₧enku. Jeliko₧ chce, aby byl hodn∞ navÜt∞vovan², zapojφ se do v²m∞nnΘho reklamnφho systΘmu Mr. Lin(x) (kterΘmu d∙v∞°uje) a k≤d tohoto systΘmu umφstφ i na strßnku s logovßnφm (kolik jich jeà) Jde p°itom o dobu, kdy tento reklamnφ systΘm m∞l adresu www.linx.cz. Jen₧e afΘry jsou vÜude a provozovatelΘ Lin(x)e se pohßdajφ s vlastnφkem domΘny linx.cz a zaΦnou horeΦn∞ p°esv∞dΦovat u₧ivatele systΘmu, aby si vÜechny adresy na linx.cz opravili na linxcz.cz. Jen₧e skuteΦn² majitel domΘny linx.cz, pan Buhvφkdo, nelenφ. P°estane provozovat reklamnφ systΘm a domΘnu si p°esm∞ruje na sv∙j vlastnφ server. Naprogramuje filtr na po₧adavky ze serveru novak.cz a do externφho javascriptu kter² byl Lin(x)em vyu₧φvßn p°idß v²Üe uveden² skript. Dokud si pan Novßk strßnky neopravφ, budou vÜechna logovßnφ kopφrovßna a hesla odesφlßna n∞komu ·pln∞ jinΘmu.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Z toho plyne pouΦenφ jen jedinΘ: na strßnky s p°ihlaÜovßnφm a na strßnky s citliv²m obsahem nikdy nevklßdejte cizφ k≤d.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Pokud by fungovala n∞jakß ochrana p°ed Φtenφm hesla javascriptem, jß osobn∞ v p°φpad∞ ·toΦnφka bych to ud∞lal nßsledovn∞ : projedu si pomocφ DHTML cel² strom objekt∙ a zaznamenßm si p°esnou pozici (offset-left, offset-top) logovacφch objekt∙. PotΘ jednoduÜe p°eplßcnu objekty sv²mi (absolutnφ polohovßnφ û bude se to p°esn∞ p°ekr²vat a u₧ivatel nic nepoznß). Ty samoz°ejm∞ budou pat°it do jinΘho formulß°e, kter² se bude odesφlat ·pln∞ n∞kam jinamà