Autor | Zpráva | ||
---|---|---|---|
kap Profil * |
#1 · Zasláno: 26. 6. 2009, 16:58:58
Zabezpečuji formulář a zajímalo by mě následující:
Útočník má vlastní stránku na kterou v iframu vloží mojí stránku (jsou to rozdílné domény samozřejmě). Uživatele přiměje navštívit tu svojí stránku. Uživateli se načte útočníkova stránka a zároveň v iframu (třeba skrytém) moje stránka. Dokáže útočník nějak zjistit obsah toho iframu? Např. ho nějak překopírovat javascriptem do té hlavní stránky a nechat to uživatele (nevědomky) odeslat? |
||
Bubák Profil |
#2 · Zasláno: 26. 6. 2009, 17:27:15
Něco je třebas tady: http://zdrojak.root.cz/clanky/prehled-utoku-na-webove-aplikace/
V závěru kapitoly Clickjacking (Click Hijacking) se píše: Řešením je nedovolit vložení naší aplikace do iframe (pokud si to můžeme dovolit). K tomu postačí kontrola pomocí JavaScriptu. |
||
kap Profil * |
#3 · Zasláno: 26. 6. 2009, 17:42:52
"nedovolit vložení naší aplikace do iframe"
to by se hodilo a jak to v Javascriptu provedu? |
||
Bubák Profil |
#4 · Zasláno: 26. 6. 2009, 18:48:10
Třeba takto: http://teststranek.kvalitne.cz/ramy1/
Napadlo mě, že by bylo možné adresy patent rámů logovat. Též by bylo možné přidat časovač a v případě, že tvá stránka je v rámu, vypsat javascriptem výrazné upozornění, že běží z nedůvěryhodné adresy. |
||
joe Profil |
#5 · Zasláno: 26. 6. 2009, 20:07:35
kap
Nevymýšlej blbosti, pokud někdo chce, tak to stejně obejde, i ten javascript, na který odkazuje Bubák. Co mě napadá, dej si do formuláře skrytý input, například s názvem verify a ulož do něj hash referera s nějakým saltem, to by mohlo fungovat, pokud mi to dobře myslí :) |
||
Bubák Profil |
#6 · Zasláno: 26. 6. 2009, 20:14:43
„ulož do něj hash referera“
A co, když referrer nebude? Co když bude vyplý JS? |
||
joe Profil |
#7 · Zasláno: 26. 6. 2009, 20:19:24
Bubák
Jistě, taková možnost může nastat, ale to útočník nemůže vědět, může se k tomu ještě přidat něco ze session, aby bylo jasné, že to není podvržené. A když bude vypnutý js, pak snad není problém stáhnout zdroj stránky, rozparsovat, vyplnit hodnoty pole a odeslat na nějaké url nebo snad nějaký problém je, o kterém nevím? |
||
vynalezce Profil |
#8 · Zasláno: 26. 6. 2009, 20:25:14
kdyz bude mit vyplej js tak je vsechno v pohode (kdyz ten form de jako post) bez js ten post neodesles
(opravte me jestli se pletu) |
||
joe Profil |
#9 · Zasláno: 26. 6. 2009, 20:28:39 · Upravil/a: joe
vynalezce
Určitě jdou odeslat POSTem data z PHP. Jde to nějak přes cURL nebo třeba bez něj tady. EDIT: pořád si ale myslím, že moje řešení s hashem je daleko bezpečnější než jen s JS. Vlastně je to docela dobrý nápad a asi to aplikuju všude kde mám formuláře :-) |
||
Bubák Profil |
#10 · Zasláno: 26. 6. 2009, 20:41:44
joe
Něco mi uniká, jak získáš ve formuláři hash bez JS? |
||
joe Profil |
#11 · Zasláno: 26. 6. 2009, 20:56:02 · Upravil/a: joe
Bubák
Zkusim vysvětlit princip jak jsem to myslel. Jsou dvě strany útočník (U) a web (W), z kterého se vypisuje formulář. Při vypisování formuláře z W vložím do formuláře input s verify kódem, který bude hash(referer + "cokoli") Pokud U načte zdroj kódu a rozparsuje, pak bude mít nějaký hash u inputu verify, ale neví z čeho je vytvořený. Pokud ho neodešle, pak data můžeme zahodit, jedná se určitě o podvrh. Pokud tam je, tak ho porovná s hash(referer + "cokoli"). Pokud se shodují, pak data přijmu. Problém může v tomto případě nastat, jen pokud bude původní referer a referer, který odesílá U prázdný, takže nějaké riziko je. Ale i to by se možná dalo nějakým způsobem odstranit. Session jak jsem psal je blbost. Možná se tím zkusím zabývat po zkouškovém. EDIT: proč bych ho měl získávat v JS? EDIT2: předpokládám, že formulář není na nějaké první stránce a v refereru bude adresa webu, kde je někde formulář umístěn |
||
Bubák Profil |
#12 · Zasláno: 26. 6. 2009, 22:33:14
„v refereru bude adresa webu“
Nemusí! Referrer jde v některých prohlížečích vypnout, falšovat, může ho blokovat proxina. Na stránku s formulářem se můžu dostat z vyhledávače, ze záložky, z historie, z uložených panelů... |
||
joe Profil |
#13 · Zasláno: 26. 6. 2009, 23:03:12
Bubák
vím, proto jsem napsal EDIT2, abych to upřesnil. |
||
Časová prodleva: 15 let
|
0