乐趣区

关于cookie:Cookie的Secure属性

基于平安的思考,须要给 cookie 加上 Secure 和 HttpOnly 属性,HttpOnly 比拟好了解,设置 HttpOnly=true 的 cookie 不能被 js 获取到,无奈用 document.cookie 打出 cookie 的内容。

Secure 属性是说如果一个 cookie 被设置了 Secure=true,那么这个 cookie 只能用 https 协定发送给服务器,用 http 协定是不发送的。换句话说,cookie 是在 https 的状况下创立的,而且他的 Secure=true,那么之后你始终用 https 拜访其余的页面(比方登录之后点击其余子页面),cookie 会被发送到服务器,你无需从新登录就能够跳转到其余页面。然而如果这是你把 url 改成 http 协定拜访其余页面,你就须要从新登录了,因为这个 cookie 不能在 http 协定中发送。

例子是:

前提条件:https://localhost:9102 利用对 cookie 设置了 Secure=true

  1. 拜访 https://localhost:9102/manager
  2. 输出用户名、明码,用 IE 或者 Chrome 的 developer tool 会看到 response 的 header 里,set-cookie 的值里有 Secure 属性
  3. 登录后,持续拜访 https://localhost:9102/manage…,能够失常看到内容
  4. 批改 url,拜访 http://localhost:9100/manager…,会跳转到登录页面,因为 cookie 在 http 协定下不发送给服务器,服务器要求用户从新登录

起因剖析:

服务器开启了 Https 时,cookie 的 Secure 属性应设为 true;

解决办法:

1. 服务器配置 Https SSL 形式,参考:https://support.microsoft.com…

2. 批改 web.config,增加:

<system.web>
<httpCookies httpOnlyCookies=”true” requireSSL=”true” />
<system.web>

退出移动版