如何设置ASP.NET会话Cookie上的安全标志?
如何在ASP.NET会话Cookie上设置“安全”标志,以便它只能通过HTTPS传输,而不能通过普通的HTTP?
有两种方式, web.config
一个httpCookies
元素允许你打开只传输所有cookie的requireSSL
,包括SSL中的会话和表单身份validation,但是如果你打开httpcookies上的SSL,你也必须打开内部表单configuration也是。
编辑清楚:把它放在<system.web>
<httpCookies requireSSL="true" />
在<system.web>
元素中,添加以下元素:
<httpCookies requireSSL="true" />
但是,如果在system.web\authentication
块中有一个<forms>
元素,那么这将覆盖httpCookies
的设置,将其设置回默认的false
。
在这种情况下,您还需要将requireSSL="true"
属性添加到forms元素中。
所以你最终会得到:
<system.web> <authentication mode="Forms"> <forms requireSSL="true"> <!-- forms content --> </forms> </authentication> </system.web>
这里和这里查看这些元素的MSDN文档。
如果您正在谈论企业环境中签入的代码,事情会变得很乱。 我们发现最好的方法是让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。