it-swarm-eu.dev

Proč je předávání ID relace jako parametru url nejisté?

Nedávno jsem následoval diskusi, kde jedna osoba tvrdila, že předávání ID relace jako parametru url je nejisté a že by se místo toho měly používat soubory cookie. Druhá osoba uvedla opak a tvrdila, že například Paypal předává ID relace jako parametr url z bezpečnostních důvodů.

Je předávání ID relace jako parametru adresy URL opravdu nejisté? Proč jsou soubory cookie bezpečnější? Jaké možnosti má útočník pro obě možnosti (soubory cookie a parametr URL)?

59
Jonathan Egerton

Je předávání ID relace jako parametru adresy URL opravdu nejisté?

I když to není inherentně nezabezpečené, může to být problém, pokud není kód dobře navržen.

Řekněme, že navštěvuji své oblíbené fórum. Přihlásí se ke mně a při každém požadavku připojí mé ID relace k URL. Najdu zvláště zajímavé téma a zkopíruji a vložím adresu URL do rychlé zprávy svému příteli.

Pokud aplikace nepodnikla kroky k zajištění toho, aby na ID relace byla nějaká forma ověření, přítel, který klikl na tento odkaz může zdědit mou relaci, a pak by mohl dělat cokoli, co mohu, jako já.

Uložením identifikátorů relace do souborů cookie zcela odstraníte problém sdílení odkazů.

Na toto téma existuje variace zvaná fixace relace , která zahrnuje úmyslné sdílení identifikátoru relace pro škodlivé účely. Propojený článek Wikipedie jde hlouběji o tom, jak tento útok funguje a jak se liší od neúmyslného sdílení identifikátoru relace.

Proč jsou soubory cookie bezpečnější?

Cookies mohou být bezpečnější zde, protože nejsou něčím, co běžní uživatelé mohou kopírovat a vkládat, nebo dokonce prohlížet a upravovat. Jsou mnohem bezpečnější výchozí.

Jaké možnosti má útočník pro obě možnosti?

Žádná z těchto metod není zabezpečena před útoky typu „člověk uprostřed“ po nešifrované komunikaci. Doplňky prohlížeče, spyware a jiné nasti na straně klienta mohou také prozkoumat obě metody ukládání identifikátorů relací.

V obou případech je nejlepší praxí ověření na straně serveru, že klient, který tvrdí, že vlastní ID relace. To, z čeho se toto ověření skládá, je na debatě. Nezapomeňte, že uživatelé za firemními servery proxy mohou mezi požadavky IP přeskakovat, takže uzamčení relace na adresu IP může lidem náhodně odcizit. Článek fixace relace zmiňuje několik dalších užitečných alternativ.

76
Charles

Většina webových stránek ukládá do relace stav svého uživatele a pokud má útočník ID relace, má také oprávnění přihlášeného uživatele. Jinými slovy, dvě obavy týkající se udržování relace a autentizace jsou často spojeny.

Jedním problémem je, že je snadné provést fixace relace útoky. V tomto případě by útočník odeslal uživateli připravenou adresu URL se známým ID relace. Pokud uživatel klikne na tuto adresu URL a provede přihlášení, bude mít útočník relaci se svolením. Pokud web vyžaduje soubor cookie, pak připravená adresa URL v e-mailu nebude stačit.

Pokud web používá HTTP smíšený s HTTPS, bylo by ID přenášeno prostým textem v URL pro všechny HTTP požadavky (i pro obrazový požadavek). Pokud tedy útočník může po přihlášení uživatele přečíst jediný požadavek HTTP, zná ID relace.

Možným řešením by bylo oddělení těchto dvou problémů, zachování relace a autentizace. Potom můžete nechat ID relace nechráněné, pouze pro udržování relace a pomocí samostatného cookie zkontrolovat stav přihlášení. Tento soubor cookie musí být nakonfigurován tak, aby byl odesílán pouze na stránky HTTPS.

23
martinstoeckli

Kromě toho, co Charles a Martin řekli, vložení cokoli do URL zvyšuje pravděpodobnost úniku. Může to být prostřednictvím záhlaví Referera v propojeném prostředku, od přístupu k koncovému bodu se záznamy historie prohlížeče, od čichání historie brutálních sil, nevhodně chráněných webových protokolů atd. Obecně se proto nedá do řetězce URL/dotazu vložit cokoli, co chcete udržet v tajnosti.

Neviděl jsem Paypal pomocí ID relací serveru v URL. Neexistuje způsob, jak by to bylo skutečně bezpečnější než cookies; Důvodem, proč tomu tak bylo v minulosti, byla podpora prohlížečů bez povolení cookies. To je v dnešní době stále méně znepokojivé a vzhledem k problémům s použitelností, že nebudou sdíleny odkazy, kromě útoků na fixaci relací, se dnes dnes obvykle vyhýbáme relaci v URL.

15
bobince

Něco, co jsem viděl před několika lety bylo to, že někdo zkopíroval URL (S sessionid) do Twitteru. Všichni sledující pak měli plný přístup k tomuto účtu osob na tomto webu.

Takže ano, vložení ID relace do URL je špatný nápad.

7
Niels Basjes