访问我的Cookie的第三方扩展

时间:2018-08-15 13:50:38

标签: javascript security cookies google-chrome-extension

我的网站上有使用过的cookie。最近,当第三方扩展程序窃取用户的会话Cookie并将其发送给欺诈者时,我注意到了一些骗局。 是否可以禁止浏览器扩展访问我网站的cookie?也许借助任何meta标签?

1 个答案:

答案 0 :(得分:0)

TLDR: HTTPS是必须的。扩展对cookies(包括httponly)的访问是荒谬的。查看here,一个manifest.json可以指向一个扩展脚本,该脚本最终可以访问您的cookie,但是如果您使用CSP标头将域列入白名单,那么我认为该扩展无法执行除非它们在较低的层上起作用(脚本被注入(:facepalm :),所以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'属性。
  • 防止其他窗口在iframe中打开页面: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