如何在ASP.NET会话Cookie上设置安全标志,使其仅通过HTTPS传输,而不是通过纯HTTP传输?
发布于 2011-05-31 23:39:06
在<system.web>
元素中,添加以下元素:
<httpCookies requireSSL="true" />
但是,如果您的system.web\authentication
块中有一个<forms>
元素,那么这将覆盖httpCookies
中的设置,并将其设置回默认的false
。
在这种情况下,还需要将requireSSL="true"
属性添加到表单元素。
所以你最终会得到:
<system.web>
<authentication mode="Forms">
<forms requireSSL="true">
<!-- forms content -->
</forms>
</authentication>
</system.web>
发布于 2020-05-20 01:42:21
基于@Mark的回答,我将使用web.config转换将所有不同的cookie设置为Secure。这包括设置anonymousIdentification cookieRequireSSL
和httpCookies requireSSL
。
为此,您需要将web.Release.config设置为:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
</system.web>
</configuration>
如果您将角色和表单身份验证与ASP.NET Membership Provider
一起使用(我知道,这很古老),您还需要将roleManager cookieRequireSSL
和forms requireSSL
属性设置为安全。如果是这样的话,你的web.release.config可能看起来像这样(包括在上面加上新的成员接口标记):
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<roleManager xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<authentication>
<forms xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
</authentication>
</system.web>
</configuration>
此处介绍web.config转换的背景:http://go.microsoft.com/fwlink/?LinkId=125889
显然,这超出了操作的原始问题,但如果您没有将它们全部设置为安全,您可以预期安全扫描工具会注意到,并且您将在报告中看到红色标志。问我怎么知道的。:)
发布于 2019-03-01 19:11:37
secure -此属性告诉浏览器仅在通过安全通道(如HTTPS )发送请求时才发送cookie。这将有助于防止cookie在未加密的请求中传递。如果可以通过HTTP和HTTPS访问应用程序,那么就有可能以明文发送cookie。
https://stackoverflow.com/questions/1442863
复制相似问题