TOPlist

Pixylophone - komentáře

Komentáře (od nejstarších po nejnovější)

Komentáře k příspěvku Dekonstrukce na webových stránkách


[1] Vložil(a): Fczbkk [web], 2003-04-16, 08:04 Solo | MuteČtenáři: ---

Dovolím si nesúhlasiť s tvrdením, že "rozhodně nedovolit uživatelům vkládat komentáře v HTML". Pokúsim sa to vysvetliť na konkrétnom príklade:

Mám web (http://acidlog.fczbkk.com/), na ktorý môžu návštevníci pridávať svoje zápisy a komentovať ich. Chcem dať návštevníkom možnosť formátovať tieto texty. Ako? Mám vymyslieť nejaký parser, ktorý bude brať značky typu [b]bold[/b] a potom ich pri zobrazovaní prevádzať na HTML kód? To je podľa mňa blbosť, pretože by to znamenalo, že sa užívateľ musí učiť nový značkovací jazyk a to je zbytočné. Taktiež by som si napr. v prípade, že by som dovolil užívateľom vkladať zložitejšie konštrukcie (trebárs tabuľky), zbytočne pridával spústu práce. Okrem toho v takom prípade nemôžem použiť napríklad IE only wysiwyg editor (ktorý čoskoro dúfam nebude už iba IE only, viď. http://www.mozilla.org/editor/midas-spec.html), ktorý je pre menej znalých užívateľov určite užitočnou pomôckou.

Takže čo s tým? Podľa mňa úplne stačí poriadne si vstup užívateľa prejsť a upraviť podľa svojich potrieb. Ja osobne používam tagwall (http://minimal-huge.host.sk/tagwall/index.html), ktorý dokáže užívateľom vložený HTML kód zvalidniť a vyhodiť z neho všetky tagy či atribúty, ktoré tam mať nechcem. A funguje to (http://validator.w3.org/check?uri=http://acidlog.fczbkk.com/).

Takže aby som to zhrnul: Užívateľský HTML kód určite áno, ale treba sa oňho dobre postarať.

[2] Vložil(a): Fczbkk [web], 2003-04-16, 08:05 Solo | MuteČtenáři: ---

Hmm... pozerám, že to automatické rozpoznávanie URL v texte nefunguje celkom tak, ako by malo. Však?

[3] Vložil(a): pixy, 2003-04-16, 08:56 Solo | MuteČtenáři: ---

Taky to bylo uvedeno jen jako jedna z pojistek. Pokud je autor dostatecne schopny, samozrejme si muze dovolit cokoli - treba parsovat vlozene HTML a kontrolovat ho. Jiste. (I kdyz se obavam, ze i ta sebechytrejsi kontrola se da pri trose sanhy obejit)...

Ad rozpoznavani URL> pravda, pravda. Nemel jsem nejak silu na vymysleni, tak je tam jen nejaky hloupy ereg('http://[^ ,]+',...) Ma-li nekdo nejaky jednoduchy regex na poznani URL v obecnem textu, rad ho pouziju. Diky.

[4] Vložil(a): Michal Kusyn, 2003-04-16, 10:43 Solo | MuteČtenáři:  - - -

Nekdo nam tu objevuje Ameriku....

[5] Vložil(a): pixy, 2003-04-16, 11:20 Solo | MuteČtenáři:  + + +

Jestli si nekdo mysli, ze pisu tyhle blogy, abych se pochubil, jaky Ameriky jsem kdy kde objevil, tak je mi to vazne lito... :(

[6] Vložil(a): Michal Kusyn, 2003-04-16, 13:14 Solo | MuteČtenáři:  - - -

Trosku jsem si popopich :)). Ale tohle je uz je obehrana pisnicka. Na druhou stranou je pravdou, ze ackoliv to vsichni vime, malokdy to delame:). Takze preventivni propagace problemu nikdy neuskodi.

[7] Vložil(a): Mise, 2003-04-16, 13:20 Solo | MuteČtenáři: ---

Nevkladat do stranky data od uzivatele??? To je snad trochu moc... to prece zcela popira smysl jakehokoliv skriptovani. Co se PHP tyka, tak kam az moje znalosti sahaji, htmlspecialchars je vselek. Neposilat data pres GET? Vzdyt je to uplne jedno jestli jsou data z GET nebo POST, podvrhnutelna jsou ve vetsine pripadu stejne, dulezite je, jak se nima nalozi. Povazovat uziti POST misto GET za zvyseni bezpecnosti proti cross site scriptingu je velice kratkozrake, vyznam to ma jen jako obrana proti session-stealingu, ale to se tyka jedne, maximalne dvou promennych (sessid vs login/password). Tyto dve rady maji smysl takto formulovane: "Kdyz vkladate dynamicka data do stranek, at uz od uzivatele nebo z databaze (kam uz se mohla dostat jakkoliv), zabrante jejich interpretaci, prejete-li si interpretaci tagu, uzijte nejaky prisny parser, ktery povoli skutecne jen to, co chcete. Pokud jste osel a tohle neznate/neumite/nedokazete pouzivejte pouze POST misto GETu, at vase promenne aspon nejsou vsem na ocich."

[8] Vložil(a): h!, 2003-04-16, 13:30 Solo | MuteČtenáři: ---

Myslim, ze tento ereg by URI mel spravne identifikovat: (.*)(http:\/\/[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}\/{1}[-_~&=\?\.a-z0-9\/]*)(.*)

[9] Vložil(a): pixy, 2003-04-16, 13:34 Solo | MuteČtenáři: ---

h!> to nestaci, chybi tam jeste par casti (user@pass, #anchor atd.) a vubec to neresi, kdyz nekdo udela za URL tecku.

[10] Vložil(a): pixy, 2003-04-16, 13:41 Solo | MuteČtenáři: ---

Mise> je to ai tak o 17 stupnu brutalneji, nez bych to chtel prezentovat ja, ale v zasade ano. Ne kazdy ovlada PHP, ne kazdy rozumi programovani - a v tom pripade je napr. pouziti POST misto GET jistym, ne stoprocentnim, ale aspon jakymstakyms zabezpecenim proti URL-dekonstrukci.

To plati i pro Marka Prokopa - nenavadim nikoho, aby rozhodne daval prednost GET pred POST. Odbornik si rozhodne vystaci s htmlspecialchars() a vic nepotrebuje. Ale laik, ktery tomu vubec nerozumi, a GET pritom nepotrebuje (ne vsechno jsou internetove obchody - a treba pro zadavani prispevku do diskusi je GET vubec skodlivy), si pouzitim POST jen prospeje. Takze prosim rozlisovat - vy vsichni, co tomu rozumite, evidentne jasne chapete, co je nutne a co neni. Ale myslete, prosim, na ty ostatni, co nejsou takovi machri jako vy.

[11] Vložil(a): Mise, 2003-04-16, 14:00 Solo | MuteČtenáři: ---

pixy: ale neni prece mozne lidem radit, jak obchazet jejich nedostatecne znalosti, spise je treba jejich znalosti rozsirovat. To je jako bys radil: "misto slova pycha pouzivejte slovo nadutost, at neudelate chybu v i/y". Mel-li bych rozsirit uvahu o GET vs. POST: je to promenna, jako promenna, pokud uz programator rozlisuje zdroj odkud prichazi, pak 1, neni problem si udelat lokalni kopii puvodni stranky, upravit zdrojak na hodnoty jake chci a kliknout na talcitko, 2, obranou je kontrolovat REFERER 3, i ten jde pokud se nepletu podvrhnout, jelikoz se pocitam posila v hlavicce dotazu, takze to zvladne bezny telnet na port 80... Vysledek: je to naprosto jednu, dulezite je, jak s daty naklada nikoliv, jak se ziskaji... Zanedbani tohoto vede az k necemu, co nazyvam dadaisticke programovani: $id=getfromPOST("id"); db_query("delete from doklad where id=$id"); pricemz programator ma pocit, ze prece uzivateli nabizi jen mazani id, na ktera ma prava.

[12] Vložil(a): Mise, 2003-04-16, 14:15 Solo | MuteČtenáři: ---

Jo a jeste jsem chtel ocenit a vyzvednout ty priklady cross site scriptingu. Atlas, Centrum... to je skutecne skvely ulovek. Skoda, ze neexistuje staleho seznam "aktualne mizernych webu", spolu se systemem, na kterem se stalo a s firmou, ktera web vyprodukovala, hodil by se investorum, producentum i pro celkove zduveryhodneni webovy stranek a aplikaci.

[13] Vložil(a): Emka [web], 2003-04-16, 16:21 Solo | MuteČtenáři: ---

pixy: kdysi jsem vyplodil tohle...o user@pass, #anchor atd. to nebude problem rozsirit:

$text = preg_replace ('/([\(:]?)((http(s?):\/\/)|(www\.))([\w\.\/\&\=\?\-~%]+)([\)\.]?\b)/, '$1<a href="http$4://$5$6">http$4://$5$6</a>$7', $text);

[14] Vložil(a): Marabu, 2003-04-16, 17:35 Solo | MuteČtenáři: ---

Jenze pixy, kdyz hodim vsude formulare v POSTu, staci aby nekdo stiskl back a je to v kytkach. Dam prednost tomu si parametry osetrit nez mast lidi hlaskama o repostu...

[15] Vložil(a): rony [web], 2003-04-16, 23:21 Solo | MuteČtenáři: ---

osetrenie vstupu je koniec koncov otazka jedneho az par riadkov, osobne pouzivam uz roky jeden sled prikazov na nacitavanie vstupov, potom ako dosiel trosku do popularity tento sposob kompromitacie, tak som si tam pridal potrebne sanovanie "zlych" znakov. Ked uz sa nechce cloveku parsovat vstupy a nejako to neovplyvni spracovanie, tak moze tie znaky proste nahradzovat/mazat. Samozrejme v co najvacsej miere nepouzivat privela parametrov - radsej spravit dajme tomu viacej skriptov, kde su "parametre" vlozene priamo v kode skriptu (to ale nie je obecna rada).

Okrem toho, cross-site scripting je oblubenou metodou "auditorov" webovych serverov (tesne po obycajnom portscane).

[16] Vložil(a): arcadio [web], 2003-04-17, 10:44 Solo | MuteČtenáři: ---

člověk si konečně rozšířil obzor jak to ty hackeři vlastně dělaj - jak sem viděl bookmarklet, tak mi bylo jasný, že je to jednoduchy.

a co třeba náznak databáze v JavaScriptu?

http://www.ita-intertact.com/files/products2.html

[18] Vložil(a): pixy, 2003-04-27, 12:29 Solo | MuteČtenáři: ---

No diky Neuvedu. A ja si myslel, ze uz to je osetreny opravdu vsude... Tady je videt, ze uhlidat dekonstrukci neni zadna sranda - v tomhle pripade jsem to zapomnel jeste ohlidat v hidden polozkach formulare... Fakt diky. Uz to neprojde.

[19] Vložil(a): dennis jason [web], 2004-07-04, 15:22 Solo | MuteČtenáři: ---

SPAM (from IP 195.87.69.26), deleted by -pixy-

[20] Vložil(a): Free Online Trading [web], 2004-08-01, 05:18 Solo | MuteČtenáři: ---

SPAM (from IP 80.58.50.174), deleted by -pixy-

[21] Vložil(a): Free Online Trading [web], 2004-08-01, 05:18 Solo | MuteČtenáři: ---

SPAM (from IP 80.58.50.174), deleted by -pixy-

[22] Vložil(a): pixy [web], 2004-08-01, 10:26 Solo | MuteČtenáři: ---

@@@STOP@@@


Váš názor

Přidat nový komentář

Váš komentář

Přidávání komentářů k tomuto příspěvku již bylo ukončeno.

Chcete-li autorovi přesto sdělit nějakou podstatnou informaci, která se příspěvku týká, kontaktujte jej e-mailem.



 RSS 0.9x  Export  RDF  Export  RSS 0.9x  Komentáře  TXT  Komentáře  XHTML 1.0  Validate  W3C  CSS 2.1  Em-web  Resizable  W4D  90% dogmatic

Vygenerováno: [stránka generována dynamicky]