通过Javascript将cookie设置为HttpOnly


87

我有一个不是的Cookie,HttpOnly可以HttpOnly通过JavaScript设置该Cookie吗?


1
怎么可能通过JavaScript设置一个JavaScript本身不应该操作的cookie?只需在服务器端进行设置即可。
BalusC

1
Cookie不是HttpOnly,我想通过Javascript将其设置为HttpOnly。

5
我认为您错过了HttpOnly的要点。
BalusC

好问题。就安全性而言,从客户端设置HttpOnly cookie确实没有任何弊端。因此,您认为这将是允许的。但是,当然不是。
PHP Guru

Answers:


171

一个HttpOnlycookie的手段,它是提供给脚本语言如JavaScript。因此,在JavaScript中,绝对没有可用的API来获取/设置HttpOnlyCookie的属性,否则会破坏的含义HttpOnly

只需在服务器端使用服务器端使用的任何服务器端语言进行设置即可。如果对此绝对需要JavaScript,则可以考虑让它发送带有某些特定请求参数的(ajax)请求,该请求参数触发服务器端语言创建HttpOnly cookie。但是,这仍然使黑客可以轻松地HttpOnly仅通过XSS更改,并且仍然可以通过JS访问cookie,从而使HttpOnlycookie上的完全无效。


4
我想知道客户端应用程序(如“ EditThisCookie”浏览器扩展)如何将HttpOnly标志更改为false。
pavanw3b 2015年

1
@ PavanW3b:它没有使用像JavaScript这样的客户端脚本语言。这只是一个浏览器扩展。
BalusC 2015年

10
@BalusC浏览器扩展都写在JS和已经有一段时间developer.chrome.com/extensions “您使用的网络技术,如HTML,JavaScript和CSS写出来。” developer.mozilla.org/en-US/Add-ons/WebExtensions/… “它们是使用标准的Web技术(JavaScript,HTML和CSS)以及一些专用的JavaScript API编写的。”还有一个开源示例,于2013年编写github.com/Asana/Chrome-Extension-Example
贾斯汀·

52
我真的看不到如何从JS设置HttpOnly会“破坏”的含义HttpOnly,只要该cookie仍无法从脚本中读取它……
hallo

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.