Answers:
有两种方法,其中一个httpCookies
元素web.config
允许您requireSSL
仅打开所有cookie,包括仅以SSL传输的cookie,也可以在表单身份验证中打开,但是,如果在httpcookies上打开SSL,则还必须在表单配置中也打开它。
编辑为清楚:
在将这个<system.web>
<httpCookies requireSSL="true" />
在<system.web>
元素中,添加以下元素:
<httpCookies requireSSL="true" />
但是,如果您<forms>
的system.web\authentication
块中有一个元素,那么它将覆盖中的设置httpCookies
,将其设置回default false
。
在这种情况下,您还需要将requireSSL="true"
属性添加到forms元素。
因此,您将得到:
<system.web>
<authentication mode="Forms">
<forms requireSSL="true">
<!-- forms content -->
</forms>
</authentication>
</system.web>
如果您正在谈论企业环境中的签入代码,事情会很快变得混乱。我们发现最好的方法是让web.Release.config包含以下内容:
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<authentication>
<forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
</authentication>
</system.web>
这样,开发人员就不会受到影响(在Debug中运行),并且只有获得Release版本的服务器才需要Cookie成为SSL。
secure-此属性告诉浏览器仅在通过安全通道(例如HTTPS)发送请求时才发送cookie。这将有助于防止cookie传递给未加密的请求。如果可以同时通过HTTP和HTTPS访问该应用程序,则可能以明文形式发送cookie。
基于@Mark D的答案,我将使用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可能看起来像这样(上面包括了会员资格API的新标签):
<?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
显然,这超出了OP的原始问题,但是,如果不将其全部设置为安全,则可以预期会有安全扫描工具注意到,并且报告中会出现红旗。问我我怎么知道。:)
<httpCookies requireSSL="true" />