如果在具有基于cookie的访问限制的站点上使用AJAX,则JavaScript需要访问cookie.HttpOnly cookies是否可以在AJAX网站上运行?
编辑:如果指定了HttpOnly,Microsoft通过禁止JavaScript访问cookie创建了一种防止XSS攻击的方法.FireFox后来采用了这个.所以我的问题是:如果你在一个网站上使用AJAX,比如StackOverflow,那么Http-Only cookies是一个选择吗?
编辑2:问题2.如果HttpOnly的目的是阻止JavaScript访问cookie,你仍然可以通过XmlHttpRequest对象通过JavaScript检索cookie,那么HttpOnly有什么意义呢?
编辑3:以下是维基百科的引用:
当浏览器收到这样的cookie时,它应该像往常一样在以下的HTTP交换中使用它,但不能让它对客户端脚本可见.[32] 该
HttpOnly
标志不是任何标准的一部分,并未在所有浏览器中实现.请注意,目前没有阻止通过XMLHTTPRequest读取或写入会话cookie.[33].
我知道document.cookie
当你使用HttpOnly时会被阻止.但似乎您仍然可以在XMLHttpRequest对象中读取cookie值,从而允许使用XSS.HttpOnly如何让你更安全?通过使cookie基本上只读?
在您的示例中,我无法写入您的内容document.cookie
,但我仍然可以使用XMLHttpRequest对象窃取您的cookie并将其发布到我的域中.
<script type="text/javascript">
var req = null;
try { req = new XMLHttpRequest(); } catch(e) {}
if (!req) try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
if (!req) try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
req.open('GET', 'http://stackoverflow.com/', false);
req.send(null);
alert(req.getAllResponseHeaders());
</script>
Run Code Online (Sandbox Code Playgroud)
编辑4:对不起,我的意思是你可以将XMLHttpRequest发送到StackOverflow域,然后将getAllResponseHeaders()的结果保存到字符串中,正则输出cookie,然后将其发布到外部域.似乎维基百科和哈克斯在这一方面同意我,但我希望能够重新接受教育......
最终编辑:啊,显然这两个网站都是错误的,这实际上是FireFox中的一个错误.IE6和7实际上是目前唯一完全支持HttpOnly的浏览器.
重申我所学到的一切:
编辑:此信息可能不再是最新的.
我如何设置的Cookie在我PHP apps
的HttpOnly cookies
?
阅读了Jeff关于保护你的Cookies的博客文章:HttpOnly.我想在我的Web应用程序中实现HttpOnly cookie.
你怎么告诉tomcat只使用http的会话?
Chrome devtool的Cookie资源面板的Http列上的复选标记是否表示HttpOnly cookie?
虽然我怀疑是这种情况,但我找不到证实这一点的文件.我正在尝试验证我的应用程序正在使用HttpOnly进行会话cookie.
灵感来自这篇CodingHorror文章" 保护你的Cookie:HttpOnly "
你怎么设置这个属性?在网络配置的某个地方?
哪些浏览器支持HttpOnly cookie,以及哪个版本?
有关HttpOnly cookie和XSS-prevention的讨论,请访问http://www.codinghorror.com/blog/archives/001167.html.
有谁知道如何在经典ASP会话cookie上设置HTTPONLY?
这是在漏洞扫描中标记的最后一件事,需要尽快修复,所以任何帮助都表示赞赏.
~~~关于我的问题的更多信息~~~
有人可以帮我这个吗?
我需要知道如何在默认情况下从ASP和IIS创建的ASPSESSION cookie上设置HTTPONLY.
这是服务器为所有asp页面自动创建的cookie.
如果需要,我可以在网站上的所有cookie上设置HTTPONLY.
任何有关如何做到这一点的帮助都将受到大力赞赏.
谢谢
谢谢艾略特
我有一个在Tomcat 7服务器上运行的Web应用程序.具有会话ID的cookie默认具有标志HttpOnly
和Secure
.我想禁用JSESSIONID
cookie的这个标志.但它不会工作.我在我的web.xml
文件中更改了这个,但它无法正常工作.
<session-config>
<session-timeout>20160</session-timeout>
<cookie-config>
<http-only>false</http-only>
<secure>false</secure>
</cookie-config>
</session-config>
Run Code Online (Sandbox Code Playgroud)
我知道这是一个安全风险,因为攻击者能够窃取cookie并劫持会话,如果他找到了xss vuln.
该JSESSIONID
饼干应与HTTP和HTTPS与AJAX请求被发送.
编辑:
我HttpOnly
通过在conf/context.xml
文件中添加以下选项成功禁用了该标志:
<Context useHttpOnly="false">
....
</Context>
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个cookie,并启用了HttpOnly标志.
虽然在Java和.Net中似乎有很多关于如何使用它的资源,但我需要在javascript中完成它.
这是我的(当前失败的)功能
createCookie = function(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; domain=my.domain.com; path=/; HttpOnly;";
Run Code Online (Sandbox Code Playgroud)
谢谢 -
在Ruby on Rails中,如何将会话cookie的httpOnly设置为false?