Javascript 什么时候在您的域上有非HttpOnly cookie是合适的?

Javascript 什么时候在您的域上有非HttpOnly cookie是合适的?,javascript,asp.net,cookies,httponly,Javascript,Asp.net,Cookies,Httponly,我已经阅读了,还有一系列的文章,包括Jeff Atwood的文章,我仍然觉得我需要更好地理解HttpOnly cookies 这是因为我需要在网站上添加一些内容。这个javascript需要在网站的域上设置和读取cookie,我认为这是一个问题。该网站是一个.Net应用程序,web.config中有httpOnlyCookies=“true”,因此我认为最好的方法是替换javascript并从后端写入cookie,以确保生成的cookie仅为HttpOnly。然后我也可以在服务器端轻松读取coo

我已经阅读了,还有一系列的文章,包括Jeff Atwood的文章,我仍然觉得我需要更好地理解HttpOnly cookies

这是因为我需要在网站上添加一些内容。这个javascript需要在网站的域上设置和读取cookie,我认为这是一个问题。该网站是一个.Net应用程序,web.config中有
httpOnlyCookies=“true”
,因此我认为最好的方法是替换javascript并从后端写入cookie,以确保生成的cookie仅为HttpOnly。然后我也可以在服务器端轻松读取cookie

我知道设置cookie属性的HttpOnly在很大程度上可以防止客户端读取和操纵cookie。但我不明白的是:

  • 考虑到上面的例子,我使用javascript实现会有问题吗
  • 使用javascript编写cookie(但仍然使用服务器端读取cookie)是否仍然可以?我不这么认为,因为cookie不是HttpOnly cookie
  • 如果我做了正确的事情(将所有内容移动到服务器端实现),为什么谷歌分析cookie总是作为非HttpOnly cookie实现?他们肯定也会带来安全问题吗

因此,正如标题所说,我想我要问的是-何时(如果有)在您的域中使用非HttpOnly cookie合适?

HttpOnly选项是对JavaScript技巧的响应,以窃取用户的会话cookie。这是因为会话cookie是一个临时凭证,允许您访问用户在服务器上登录的会话

对于任何其他非会话cookie,这实际上取决于您自己的风险评估。如果您真的不关心在没有
httpOnly
的情况下略微增加的曝光率,或者您只是需要从JavaScript访问它们的值,那么忽略此选项即可


一些安全扫描器或不称职的pentesting团队会报告每个cookie缺少
httpOnly
标志,只是因为它很容易被发现,并且允许他们轻松地夸大报告。但是解释
httpOnly
的实际用途和起源应该足以反驳这一点。

所以这比我想象的要简单得多。根据上面@mah留下的评论,当cookie包含非敏感信息时,将cookie标记为
HttpOnly
是多余的。

保留不安全信息的cookie(例如,记住上次使用的浏览器窗口大小的cookie)实际上不是安全问题。谁在乎信息是否泄露?任何时候,只要你想让JavaScript能够读取cookie,你就需要它不是HttpOnly。例如,您不想使用经过身份验证的会话密钥来执行此操作。@mah是的,这很明显:)问题是何时使用非HttpOnly cookie合适?如果我可以在服务器端处理所有cookie实现,我应该吗?还是说这太过分了?如果是这样的话,为了回答这个问题,你必须首先考虑曲奇的目的。如果它与用户对显示内容的偏好有关,那么JavaScript处理可能是更好的解决方案。相反,如果用户偏好显示哪些数据(可能过滤掉数据),那么服务器端解决方案可能更好(限制带宽),但HttpOnly可能并不重要(因为没有安全分支——或者不应该如此)。HttpOnly实际上只对安全敏感的东西才有必要。因此,对于任何包含非敏感信息的cookie,HttpOnly要求都可以忽略。就这么简单?