Cookie是安全还是安全?什么时候会这样?

时间:2014-04-15 03:37:20

标签: security http cookies nginx https

众所周知,具有Secure属性的cookie意味着它只是通过加密连接传输。所以我的问题是,如果一个cookie可以是安全cookie而不是安全cookie。如果是这样, 为什么或为了什么?

2 个答案:

答案 0 :(得分:1)

  

Secure和HttpOnly属性没有关联的值。相反,属性名称的存在表明指定了Secure和HttpOnly行为。

     

Secure属性旨在将cookie通信限制为加密传输,指示浏览器仅通过安全/加密连接使用cookie。如果Web服务器使用来自非安全连接的安全属性设置cookie,则在通过中间人攻击将cookie发送给用户时,cookie仍然可以被截获。

     

HttpOnly属性指示浏览器不要通过HTTP(和HTTPS)请求以外的渠道公开cookie。 HttpOnly cookie无法通过非HTTP方法访问,例如通过JavaScript调用(例如,引用“document.cookie”),因此不能通过跨站点脚本(普遍的攻击技术)轻易窃取。[37]其中,Facebook和Google广泛使用HttpOnly属性。

简而言之,这意味着“安全”属性意味着它需要安全(ssl)传输,例如HTTPS。

这是为了防止cookie被盗或cookie劫持。您可以查看此wiki

您可能还想了解Cookie加密或签名Cookie,这是一种使您的Cookie免受恶意Cookie修改的方法。基本上,您将一个哈希值附加到cookie值,并使用它来验证cookie的值是否未被修改。

答案 1 :(得分:1)

如上所述,Cookie可以有Secure flag.

如果true,则Cookie仅由浏​​览器发送,用于HTTPS请求。

如果false,则浏览器会针对HTTP HTTPS请求发送Cookie。

仅在HTTP上没有传输设置。 HTTPOnly标志只是阻止它通过JavaScript和其他客户端语言访问,它不会影响其HTTP / HTTPS行为。

因此,通过将Secure设置为false,将根据当前协议对cookie进行加密和解密传输。

建议不要这样做,因为如果通过HTTP连接发送cookie值,或者攻击者强迫cookie值被嗅探(例如,攻击者只是链接到他们站点上的图像标记中的HTTP站点将导致值为泄露 - <img src="http://www.example.com/img.jpg" />)。