我的网站上有使用过的cookie。最近,当第三方扩展程序窃取用户的会话Cookie并将其发送给欺诈者时,我注意到了一些骗局。 是否可以禁止浏览器扩展访问我网站的cookie?也许借助任何meta标签?
答案 0 :(得分:0)
TLDR: HTTPS
是必须的。扩展对cookies
(包括httponly
)的访问是荒谬的。查看here,一个manifest.json
可以指向一个扩展脚本,该脚本最终可以访问您的cookie,但是如果您使用CSP
标头将域列入白名单,那么我认为该扩展无法执行除非它们在较低的层上起作用(脚本被注入(:facepalm :),所以CSP不适用于它们,根据我的阅读,它看起来像那样。。。)
我会考虑先控制要允许通讯的第三方应用程序。为此,请考虑:
Content-Security-Policy
标头。 https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP 要使用以上内容,您需要将协议切换为https
。
接下来,您信任的脚本仍有可能表现出恶意行为,然后对于严格保密的cookie,请使用httponly
选项从服务器端设置这些cookie:
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly
这样,js无法访问它们。通读Cookie @MDN
不用说,不要让其他人访问您的窗口:
oWindow = window.open(.....)
,请确保oWindow
无权访问您:oWindow.opener = null
; rel='noopener noreferrer'
属性。X-Frame-Options: SAMEORIGIN
最后,我不建议这样做(我也没有尝试),因为它不提供真正的安全性,但是,如果您确定第三方实现不需要XMLHttpRequest,则可以猴子对其进行修补,然后从中删除它。全球:
XMLHttpRequest = (function(xhtp){
//do whatever you need here while you have access
return null;
}(XMLHttpRequest))
或从原型中删除withCredentials
吸气剂/塞特剂,因为它永远不会影响相同的原产地(假定为非):
delete XMLHttpRequest.prototype.withCredentials