IIS下的.net網(wǎng)站:加密會(huì)話(SSL)Cookie中缺少secure屬性
IIS下的.net網(wǎng)站,安全掃描提示:加密會(huì)話(SSL)Cookie中缺少secure屬性。
問題解釋
Secure屬性:當(dāng)Cookie設(shè)置了Secure屬性后,瀏覽器只會(huì)在通過HTTPS協(xié)議發(fā)起的請(qǐng)求中才會(huì)攜帶此Cookie。如果使用的是HTTP請(qǐng)求,則不會(huì)發(fā)送。這有效防止了竊聽者通過明文的HTTP連接竊取用戶的會(huì)話Cookie。
風(fēng)險(xiǎn):如果您的網(wǎng)站使用了HTTPS,但會(huì)話Cookie沒有設(shè)置Secure屬性,那么用戶在使用HTTP訪問時(shí)(即使被重定向到HTTPS),其會(huì)話標(biāo)識(shí)也有可能在不安全的通道中泄露。
修復(fù)方法:在web.config中配置
這是最直接、最常用且影響范圍最廣的方法。您只需要修改網(wǎng)站的web.config文件即可。
· 打開您網(wǎng)站根目錄下的 web.config 文件。
· 在 <system.web> 或 <system.webServer> 節(jié)點(diǎn)下,找到或添加 <httpCookies> 元素。
· 將 requireSSL 屬性設(shè)置為 true。
<configuration> <system.web> <!-- 其他配置... --> <!-- 這是關(guān)鍵配置:設(shè)置所有由ASP.NET發(fā)出的Cookie都要求SSL --> <httpCookies requireSSL="true" /> <!-- 對(duì)于會(huì)話狀態(tài)Cookie,也可以單獨(dú)設(shè)置 --> <sessionState cookieSameSite="Strict" cookieless="UseCookies" timeout="20" cookieSecure="SslIfRequired" /> <!-- 表單認(rèn)證的Cookie --> <authentication mode="Forms"> <forms loginUrl="~/Account/Login" timeout="2880" requireSSL="true" /> </authentication> </system.web> </configuration>
關(guān)鍵說(shuō)明:
<httpCookies requireSSL="true" />: 這行配置會(huì)為所有由ASP.NET運(yùn)行時(shí)自動(dòng)生成的Cookie(包括Session Cookie、Forms Authentication Cookie等)自動(dòng)加上Secure屬性。
<forms requireSSL="true" />: 如果您使用了表單認(rèn)證,這是一個(gè)額外的、更明確的設(shè)置。
<sessionState cookieSecure="SslIfRequired" />: 這個(gè)設(shè)置專門針對(duì)會(huì)話Cookie。SslIfRequired 是默認(rèn)值,通常與頂層的 <httpCookies> 設(shè)置配合良好。為了更嚴(yán)格,您可以設(shè)置為 true。
修改后,請(qǐng)重啟您的網(wǎng)站應(yīng)用程序池以使配置生效。
上一篇:Nginx配置:只允許本站調(diào)用站內(nèi)的mp4視頻,禁止外部下載