如何设置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。