it-swarm-eu.dev

Jak zajistit, aby soubory cookie byly vždy odesílány přes SSL, když používáte ASP.NET na IIS 7.5?)?

Firesheep přinesl do popředí otázku nejistých výměn souborů cookie.

Jak můžete zajistit, aby ke všem výměnám souborů cookie došlo při komunikaci s webovým uživatelem pouze prostřednictvím připojení zabezpečeného SSL k serveru?

Náš scénář spočívá v tom, že webová aplikace je napsána v ASP.NET 4.0 a je hostována v systému Windows Server 2008 R2 se spuštěným IIS 7.5, pokud se tím rozsah částečně zužuje).

23
cpuguru

Můžete použít app.config k vynucení; formát je (v <system.web> sekce)

<httpCookies domain="String"
             httpOnlyCookies="true|false" 
             requireSSL="true|false" />

takže opravdu chcete, minimálně

<httpCookies requireSSL='true'/>

Nejlépe však zapnete také httpOnlyCookies, pokud neděláte nějaký opravdu zahnutý javascript.

21
blowdart

Nejbezpečnější způsob, jak chránit web před požárem (a souvisejícími útoky):

  • Přechod na ochranu SSL na celém webu : Přesuňte celý web na HTTPS a deaktivujte veškerý přístup HTTP. Jinými slovy, chráňte celý svůj web pomocí SSL. Zde je několik dalších zdrojů, jak toho dosáhnout: jak se chránit proti Firesheep , klady a zápory SSL na celém web , proč SSL chrání proti Firesheep .

  • Nastavení příznaku SECURE u všech souborů cookie : Kdykoli server nastaví soubor cookie, zajistěte, aby pro tento soubor cookie nastavil příznak SECURE. Příznak SECURE říká prohlížeči uživatele, aby tento soubor cookie odeslal pouze prostřednictvím připojení zabezpečených pomocí SSL (HTTPS); prohlížeč nikdy neposílá cookie SECURE přes nešifrované připojení (HTTP). Nejjednodušším krokem je nastavení tohoto příznaku na každém souboru cookie, který váš web používá.

Doporučuji také několik dalších kroků:

  • Buďte opatrní ohledně obsahu třetích stran : Widgety, knihovny a obsah třetích stran mohou představovat bezpečnostní riziko. Pokud zahrnete Javascript od třetích stran (např. Prostřednictvím <SCRIPT SRC=...>), Doporučujeme vám zajistit, aby odkazovali na adresy HTTPS; jinak vystavujete zabezpečení svého webu aktivním útokům. (Viz také Jeremiah Grossman's FAQ pro widgety třetích stran .) Abyste zabránili zaplavení vašich uživatelů pomocí varování smíšeného obsah , budete chtějí zajistit, aby veškerý obsah, včetně obrázků a knihoven třetích stran, byl dodáván také prostřednictvím protokolu HTTPS.

Někteří by mohli argumentovat, že výše uvedené je nadměrné. V některých případech je možné chránit před Firesheep pomocí SSL pouze na části webu. To však vyžaduje péči a podrobné znalosti a je obtížnější získat pravdu. Vzhledem k tomu, že zde musíte položit otázku, osobně doporučuji začít s SSL na celém webu; máte lepší šanci na to, abyste to napravili.

Jak to implementovat ve IIS : Nejsem odborník IIS expert, takže vám nemůžu dát definitivní recept na jak tyto kroky implementovat ve IIS. Nicméně tento odkaz na povolení SSL na IIS může být pro vás užitečný. Vypadá to, že můžete kliknout pravým tlačítkem na kořen webu, vyberte Properties , klikněte na záložku Directory Security, poté na Secure Communications, klikněte na Edit a povolte Require Secure Channel (SSL). Nevím, jak nakonfigurovat IIS pro automatické nastavení příznaku SECURE u všech souborů cookie. Při migraci existujícího webu doporučujeme nastavit přesměrování tak, aby každý, kdo navštíví stránku HTTP, byl přesměrován na HTTPS. netestováno): přesměrování na HTTPS , tři metody přesměrování na HTTPS . Pokud migrujete existující web, budete také muset změnit všechny odkazy a odkazy na váš web z http: URL na adresy https:. Nejsem si jistý, jak nakonfigurovat ASP.NET tak, aby nastavoval příznak SECURE na všech cookies, ale myslím, že můžete přidat cookieRequireSSL="true" Nebo <httpCookies requireSSL="true"> Na váš Web.config; to je důležité udělat, a zvláště důležité, pokud máte povoleno HTTP nebo pokud máte nějaký druh přesměrování ze stránek HTTP na stránky HTTPS. A konečně, existuje mnoho materiálů publikovaných na ladění výkonu pro HTTPS .

18
D.W.

Při rozhodování o vydání jsem narazil na toto vlákno. Rozlišení, které jsem měl, je, že cesty souborů cookie rozlišují velká a malá písmena. Zde je související otázka.

https://stackoverflow.com/questions/399982/why-are-cookie-paths-case-sensitive

Mým rozlišením bylo přesměrovat ze vstupní stránky na správnou cestu. Nezapomeňte dávat pozor na možné přesměrování smyček.

url.com/VirtualDirectory/default.aspx ->

// který nyní dá správnou cestu url.com/virtualdirectory/default.aspx response.redirect ("~/default.aspx");

1
MichaelChan