更好地了解SECURED Cookies

时间:2015-11-27 12:30:49

标签: c# asp.net-mvc

我在Web应用程序(asp-mvc)上工作。 我们要求始终使用安全的Cookie。 我已经读过我应该在我的应用程序的web配置中添加: enter image description here

这可以在我发布我的应用程序时保护我的cookie。

现在,问题是在我们的开发环境中我们使用HTTP协议,并且只在我们的生产环境中使用HTTPS协议。

在我的应用程序的第一页中,我有一个验证码验证(我们使用captchaMVC的dll)。 通过在web.config中添加提到的代码来保护我的cookie(在我们的开发环境中),验证码页面不会加载属性。 我有一个想法,也许是因为我尝试在我的开发环境中使用HTTP上的安全cookie(而不是HTTPS),也许在生产环境中,一切都能正常工作。 任何人都可以对这个话题有更多了解吗?

1 个答案:

答案 0 :(得分:3)

HttpCookie.Secure = true;

documentation for HttpCookie.Secure property州:

获取或设置一个值,该值指示是否使用安全套接字层(SSL)传输cookie - 即仅通过HTTPS传输。

这令人困惑。

根本的事实是,无论连接是否安全,cookie都将始终发送给客户端。

这是必要的,原因有两个。首先,您的应用程序服务器可能位于防火墙/ NLB后面,该防火墙/ NLB具有用于实现SSL offloading的网站的SSL证书,其次,您可以通过非安全连接(具有网站的网站)显示您的网站登录部分视图)并通过安全连接发回登录表单,并且可能希望仅在连接安全时才传回您的cookie。

关键是,这仅在客户端有效。浏览器将决定是否发送cookie,具体取决于为当前请求选择的通信协议。

以下是我通过非安全连接使用安全cookie的方法。

Response Haders:

Response    HTTP/1.1 200 OK
Cache-Control   private
Content-Type    text/html; charset=utf-8
Server  Microsoft-IIS/8.0
Set-Cookie  ASP.NET_SessionId=xxwcvdn22lietdqtvirucxzv; path=/; secure; HttpOnly
X-AspNet-Version    4.0.30319
Set-Cookie  My=My Cookie Value; path=/; secure
X-Powered-By    ASP.NET
Date    Fri, 27 Nov 2015 13:14:00 GMT
Content-Length  510

回帖:

Request Headers:

Request GET /Default2.aspx HTTP/1.1
Accept  text/html, application/xhtml+xml, */*
Accept-Language tr-TR
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding gzip, deflate
Host    localhost:59442
DNT 1
Connection  Keep-Alive

因此,您不应为开发环境或不支持SSL的任何环境(测试,preprod,分支等)指定HttpCookie.Secure = true;。这意味着为这些环境提供了不同的web.config文件,如果您在web.config文件中保留连接字符串等,这无论如何都是必需的。

您的问题的答案是,是的,它应该适用于通过安全连接(https)访问网站的环境

您可以使用您喜爱的浏览器的开发者工具检查cookie是否已发回,适用于任何环境。