Autor | Zpráva | ||
---|---|---|---|
etrix Profil |
#1 · Zasláno: 11. 2. 2008, 09:52:03
Zdravím,
různě na netu jsem se dočetl, že pokud budu na www stránkách odkazovat na cizí weby (nebo umožním ukládat aktivní odkazy v diskusi uživatelům), může mi nějaký vykuk hacknout web přes script injection. Proto se mají dělat různá opatření, která s sebou přináší zase nepohodlí atd. Ale když tak koukám na různá fóra a i třeba do phpbb, tak tam se odkazy zvěřejnují naprosto nechráněné, tak vadí to nebo to nevadí? Jsem zmaten. Dík za info. |
||
ninja Profil |
#2 · Zasláno: 11. 2. 2008, 09:56:40
etrix: Pokud umoznis vkladat URL ze kterych udelas normalni odkaz <a href=..., zadne nebezpecni ti nehrozi. Tedy krom spatneho hodnoceni, kdyz linky povedou na porno/gambling/atd. stranky.
Slozitejsi je to u vkladani obrazku ci JS, tak uz jiste nebezpeceni hrozi. |
||
etrix Profil |
#3 · Zasláno: 11. 2. 2008, 10:05:00
Rád bych umožnil:
<a href="http://hack.xy/hack.php">ahoj</a> a <img src="http://hack.xy/hack.php" /> Javascript si ošetřím. Jaký je tedy problém s obrázkem? |
||
Leo Profil |
#4 · Zasláno: 11. 2. 2008, 11:26:21
Problem v tomto pripade muze byt hlavicka referrer, ktera na cizi web prenasi informaci o tom, co ma uzivatel v adresnim radku - pokud tam ma vse nezbytne pro prihlaseni, mate vymalovano. Dalsi vec - jste si jisty, ze opravdu vite jakymi vsemi zpusoby se do kodu muze dostat javascript? Leo
|
||
Timy Profil |
#5 · Zasláno: 11. 2. 2008, 11:38:52
ninja
„Pokud umoznis vkladat URL ze kterych udelas normalni odkaz <a href=..., zadne nebezpecni ti nehrozi. Tedy krom spatneho hodnoceni, kdyz linky povedou na porno/gambling/atd. stranky.“ Teď nevím jak to myslíš, ale i URL se musí ošetřovat, abych tam nemohl vložit „javascript:alert(1);“. Asi nejlepší je ověřit regulárem, jestli se jedná o platnou adresu. Nebo alespoň zkontrolovat, jestli adresa začíná http|https|ftp, pak už je to AFAIK v pořádku (respektive to možná povede na nesmyslnou adresu, ale to už není bezpečnostní riziko). Jak dokonale ošetřit <img>, aby ten odkazovaný obrázek nemohl spustit žádný skript, nevím. |
||
ninja Profil |
#6 · Zasláno: 11. 2. 2008, 12:05:01
Timy: ano, musis osetrit jeslti vlozeny string je skutecne URL (alespon teoreticky).
Jak dokonale osetrit vlozeny obrazek z ciziho serveru taky nevim. Rozhodne je dobre v GETu (tedy URL stranky) nemit pole jmeno a heslo :). Je mozne testovat jestli adresa obrazku je skutecne obrazek (alespon podle hlavicky). A stejne jako u linku overit validnost URL obrazku. |
||
etrix Profil |
#7 · Zasláno: 11. 2. 2008, 14:32:24
Problem v tomto pripade muze byt hlavicka referrer, ktera na cizi web prenasi informaci o tom, co ma uzivatel v adresnim radku - pokud tam ma vse nezbytne pro prihlaseni, mate vymalovano. Dalsi vec - jste si jisty, ze opravdu vite jakymi vsemi zpusoby se do kodu muze dostat javascript? Leo
Pro přihlašování vždy používám POST data, takže v adresním řádku by nic důležitého být nemělo. Jistý si nejsem, pokud znáte způsob jak dostat javascript do kódu, ve kterém povolím jen A a IMG tagy a zároveň vyfiltruji ONcokoli="" a přesto tam lze js dostat, tak sem s tím. |
||
Timy Profil |
#8 · Zasláno: 11. 2. 2008, 16:17:12 · Upravil/a: Timy
etrix
<a href="javascript:alert(1);">tohle bude fungovat všude</a> <a href="" style="expression(eval('alert(1);'));">něco takového by mělo fungovat v IE</a> <img src="javascript:alert(1);"> tohle údajně funguje v nějakých prehistorických prohlížečích A jakým způsobem odfiltruješ to oncokoliv? |
||
Timy Profil |
#9 · Zasláno: 11. 2. 2008, 16:19:16 · Upravil/a: Timy
ninja
„Je mozne testovat jestli adresa obrazku je skutecne obrazek (alespon podle hlavicky). A stejne jako u linku overit validnost URL obrazku.“ Validita URL obrázku je nepodstatná, protože pod stránkou /index.php?obrazek=1 může být opravdu obrázek a pod adresou /planetarium.jpg může být klidně PHP skript, záleží na nastavení serveru/.htaccess. |
||
etrix Profil |
#10 · Zasláno: 12. 2. 2008, 06:36:14
Timy:
Používám tohle: http://cz2.php.net/manual/en/function.strip-tags.php#36574 a neporadilo si to akorát se style="expression(eval('alert(1);'));", ale mě to v IE6 nefunguje. Není to dokonalý, ale na pár věcí to funguje. Jinak na intervalu se píše: Pokud chceme povolit vkládání odkazů, je bezpodmínečně nutné odkazovat nikoli na požadovanou adresu, ale na skript, který se otevře v novém okně (pomocí target="_blank") a teprve pak přesměruje na požadovanou adresu. Nové okno je tak prosto jakékoli historie předchozího okna i zrádného refereru. A pořád nerozumím tomu, jak se díky refereru, ve kterém není nic nebezpečného, můžu dostat na cizí účet, když zjistím že referer je web.cz/index.php?jdi=nastaveni, tak jak mi to umožní měnit někomu nastavení (použít jeho session)? Mimochodem, dobrá stránka: http://ha.ckers.org/xss.html |
||
Časová prodleva: 16 let
|
0