java ajax cookies_HttpOnly cookie如何处理AJAX请求?

如果在具有基于cookie的访问限制的站点上使用AJAX,则JavaScript需要访问cookie . HttpOnly cookies会在AJAX网站上运行吗?

编辑:如果指定了HttpOnly,Microsoft通过禁止JavaScript访问cookie创建了一种防止XSS攻击的方法 . FireFox后来采用了这个 . 所以我的问题是:如果你在一个网站上使用AJAX,比如StackOverflow,那么Http-Only cookies是一个选择吗?

编辑2:问题2.如果HttpOnly的目的是阻止JavaScript访问cookie,你仍然可以通过JavaScript通过XmlHttpRequest对象检索cookie, what is the point of HttpOnly ?

编辑3:以下是维基百科的引用:

当浏览器收到这样的cookie时,它应该像往常一样在以下HTTP交换中使用它,但不能让它对客户端脚本可见 . [32] HttpOnly标志不是任何标准的一部分,并未在所有浏览器中实现 . 请注意,目前没有阻止通过XMLHTTPRequest读取或写入会话cookie . [33] .

我知道当您使用HttpOnly时 document.cookie 被阻止 . 但似乎您仍然可以在XMLHttpRequest对象中读取cookie值,从而允许使用XSS . HttpOnly如何让你更安全?通过使cookie基本上只读?

在您的示例中,我无法写入您的 document.cookie ,但我仍然可以使用XMLHttpRequest对象窃取您的cookie并将其发布到我的域中 .

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());

编辑4:对不起,我的意思是你可以将XMLHttpRequest发送到StackOverflow域,然后将getAllResponseHeaders()的结果保存到字符串中,正则输出cookie,然后将其发布到外部域 . 维基百科和ha.ckers似乎在这个问题上同意我,但我希望能够重新接受教育......

最终编辑:啊,显然两个网站都错了,这实际上是bug in FireFox . IE6和7实际上是目前唯一完全支持HttpOnly的浏览器 .

重申我所学到的一切:

HttpOnly限制对IE7和FireFox中的document.cookie的所有访问(不确定其他浏览器)

HttpOnly从IE7中的XMLHttpObject.getAllResponseHeaders()中的响应头中删除cookie信息 .

XMLHttpObjects只能提交给它们来自的域,因此没有cookie的跨域发布 .

编辑:此信息可能不再是最新的 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值