IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – Obrana proti útoku XSS v PHP

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Michal Žůrek - misaz:12.5.2015 22:52
ini_set("session.cookie_httponly", 1);

A co brání útočníkovi podvrhnout hlavičky HTTP?

 
Odpovedať
12.5.2015 22:52
Avatar
Odpovedá na Michal Žůrek - misaz
Uživatel sítě :12.5.2015 23:01
header('Strict-Transport-Security: max-age=63072000');

A pokud chceš na subdomény tak přidáš parametr includeSubDoma­ins.

Editované 12.5.2015 23:02
Odpovedať
12.5.2015 23:01
Chybami se člověk učí, běžte se učit jinam!
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Michal Žůrek - misaz
David Hartinger:12.5.2015 23:31

Tady jde o to, že tu cookie potom nevidíš z JavaScriptu. A když uděláš z injektovaného skriptu AJAX request na jinou doménu, tak se tam nepošle, protože to není ta doména ze které byla uložena. Jak jsi to myslel? Nenapadá mě způsob jak ji ze skriptu načíst.

Odpovedať
12.5.2015 23:31
New kid back on the block with a R.I.P
Avatar
Odpovedá na David Hartinger
Michal Žůrek - misaz:12.5.2015 23:33

ale co když požadavek neposílá webový prohlížeč ale aplikace v C# přestrojena za prohlížeč?

 
Odpovedať
12.5.2015 23:33
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Michal Žůrek - misaz
David Hartinger:12.5.2015 23:47

To bys ji musel dostat k tomu administrátorovi. Tady jde o to, že přes XSS dostaneš nějaký skript k němu a on ti odešle jeho cookies.

Odpovedať
12.5.2015 23:47
New kid back on the block with a R.I.P
Avatar
asanos
Člen
Avatar
asanos:15.6.2015 15:19

V každém případě:

ini_set("sessi­on.cookie_httpon­ly", 1);

není dostatečná obrana proti session hijackingu.
____
Mírně opožděná reakce, omlouvám se, dlouho jsem tu nebyl. ;)

Editované 15.6.2015 15:20
Odpovedať
15.6.2015 15:19
Na světě je 10 typů lidí. Ti, kteří rozumí binárce a ti co nerozumí.
Avatar
Odpovedá na asanos
Dominik Klapuch:15.6.2015 15:49

Ahoj, samozřejmě že ne. Ale direktivy jako session.cooki­e_secure asi moc lidí používat nebude, protože slouží jen pro https.

Dále session.use_on­ly_cookies, které je již zapnuto od 5.3.0, takže se o to nemá cenu starat.

V případě, že by ti někdo chtěl ukrást session, využil by právě session.cooki­e_httponly direktivy.

Samozřejmě je dobré také regenerovat session. Nicméně je třeba implementovat časovač.

Dále můžeš využít session.use_stric­t_mode direktivu, ale ta je relativně zbytečná, pokud regeneruješ session.

Jako poslední používám vlastní názvy pro session. Nicméně, nedočetl jsem se, že by toho někdo někdy využil pro krádež session :)

Tím jsem chtěl říct, že session hijacking je zase jiné téma než XSS a obsáhlo by jistě několik článků :)

Odpovedať
15.6.2015 15:49
Kód a data patří k sobě.
Avatar
asanos
Člen
Avatar
asanos:15.6.2015 16:32

session.cooki­e_secure pokud vím slouží pro to, aby cookie nebyla viditelná, pokud se jedná o spojení http. Čili jakožto obrana proti session hijackingu neslouží. Možná si jen nedokážu představit jak to myslíš.

Měl jsem na mysli XMLHttpRequest a metodu getAllResponse­Headers, ale tohle je celkem známá chyba takže ji už asi ošetřili.

V případě http spojení vždy hrozí MITM, proto se využívá ohlídání IP adresy
(IP adresa při přihlášení by měla být shodná s IP ze které chodí všechny požadavky), kde je problém pokud se uživateli tato adresa během relace mění (znám takové případy -> nic neobvyklého).
Nebo hlavička User-agent, tady je ale problém, kdy je na scéně omezený počet prohlížečů a útočníkovy nedělá až taký problém zkusit se kterým se do systému dostane ;)

Odpovedať
15.6.2015 16:32
Na světě je 10 typů lidí. Ti, kteří rozumí binárce a ti co nerozumí.
Avatar
Dominik Klapuch:15.6.2015 16:43

Pokud máš nastaveno session.cooki­e_secure, tak se ti session přenesou pouze přes HTTPS, jinak ne. Můžeš si to zkusit na webu pouze s HTTP. Stále to považuji za jakousi ochranu session proti odcizení.

Jistě, v HTTP hrozí sniffování paketů, ale to je zase jiný problém, který můžeš vyřešit pomocí HTTPS, HSTS nebo preload listu.

To jsme odbočili už docela hodně od XSS :D
Pokud bych se chtěl držet XSS, tak mi v článku dost chybí zmínění o CSP.

Odpovedať
15.6.2015 16:43
Kód a data patří k sobě.
Avatar
asanos
Člen
Avatar
Odpovedá na Dominik Klapuch
asanos:15.6.2015 17:00

jn... Mám v plánu si zažádat o redaktorské práva na odborné články zaměřených na webovou bezpečnost. U článku o Clickjackingu bych se o něm zmínil v souvislosti s FRAME-ANCESTORS.
__________
Možná by to ode mě bylo i sprosté, ale chtěl bych zdejší články o PHP - Bazpečnosti mírně poupravit. Ale na to bych se musel domluvit s autorem, netušíš jestli je ještě aktivní?

Odpovedať
15.6.2015 17:00
Na světě je 10 typů lidí. Ti, kteří rozumí binárce a ti co nerozumí.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!