05. 07. 2009. | #1 |
Ivan Dilber
Sir Write-a-Lot
|
html escape
malo sam zardjao oko XSS-a i escaping-a, a vidim da je nedavno Ivan drzao predavanje na temu securitija, pa taman da vas preslisam
Hocu da si napravim assign_safe() f-ju za smarty, sa idejom da ona odradi sav potreban escaping da mogu bez mnogo razmisljanja da printam bilo koji submitovani text: a) negde unutar html-a (recimo poruka o gresci na formi) b) unutar value atributa za inpute, i unutar textarea polja da li je dovoljno uraditi htmlspecialchars($string, ENT_QUOTES, $char_set); ili moram jos nesto? Ako ima neka gotova rutina za ovo, bez mnogo komplikacija, jos bolje, dajte source ili link... Znam da postoje kses i slicne klase za ovo, ali hteo bih lightweight resenje bez ikakvih fancy opcija, samo treba da sve redom pocisti i konvertuje u 100% bezbednu formu.
__________________
Leadership is the art of getting people to want to do what you know must be done. |
05. 07. 2009. | #2 |
Psychedelictrance freak
Wrote a book
|
htmlspecialchars($string, ENT_QUOTES, $char_set) je u vecini slucajeva pravo resenje.
ENT_QUOTES se dodaje zbog ', a $char_set je bitan zato sto postoje nacini da se izvrsi XSS sa nekim drugim (npr utf-7) enkodingom. Ja bih zabranio i koriscenje svih zagrada, taraba i sl u slucaju da je moguce "kontrolisati" neki deo javascripta.
__________________
Testiranje bezbednosti web aplikacija |
05. 07. 2009. | #3 |
Goran Pilipović
Sir Write-a-Lot
|
Da, to bi trebalo da je sasvim dovoljno, ali obrati pažnju ako stavljaš neki text na title atribut pa onda recimo radiš neke javascript munje (aka tooltip), u tom slučaju čak i kada je escape-ovano, izvršiće se javascript.
Takođe obrati pažnju na to da ti je nekada baš potrebno da bude ne-escape-ovan tekst, recimo ako ima neki html koji hoćeš da pljusneš baš takko kako jeste i da ostane formatiran. Kao što si rekao, ne treba ti nikakva teška artiljerija, besmisleno je štititi se od svega postojećeg (recimo ovaj Ivanov primer za utf-7, većina non-asian sajtova i ne koristi taj encoding), tako da je sasvim dovoljno to što si naveo, plus malo type casting (skoro isključiv kod inputa). Recimo, smarty modifier escape radi upravo to, ali onda moraš u samom template da pišeš svaki put {$neka_varijabla|escape}
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
SEF .html ili .php? | Codegen | Marketing i SEO | 5 | 11. 06. 2008. 00:32 |
Html 5 | twix | (X)HTML, JavaScript, DHTML, XML, CSS | 1 | 05. 12. 2007. 16:37 |
Input escape - mysql_real_escape_string | bluesman | PHP | 11 | 11. 03. 2007. 16:14 |
Escape char iz mysql komandne linije. | Dragi Tata | SQL baze podataka - Sponzor: Baze-Podataka.net | 11 | 05. 08. 2006. 16:35 |
HTML/CSS na PDA | Pedja | (X)HTML, JavaScript, DHTML, XML, CSS | 6 | 26. 01. 2006. 12:59 |