我正在开发一个扩展程序,它会在页面中注入脚本。
这个扩展程序基本上是一个内容脚本,它会将另一个脚本注入到DOM中。(为什么不只用内容脚本呢?)
(我的代码没有任何问题,它可以正常工作。这里的主要目的是了解 Web 开发中的安全问题。)
被注入的脚本是我的扩展程序中的源文件,我使用 JQuery.get 从地址 chrome.extension.getURL('myscript.js')
获取它。
有什么安全问题需要注意吗?
该页面不是https
,这个get
方法会返回与我的脚本不同的东西吗?
我还使用相同的方法插入 HTML 内容。HTML 文件来自于我的扩展程序,就像脚本一样。是否存在中间人篡改响应文本的可能性?
如果存在这样的安全问题,有什么常见的做法可以避免它们?
另外,如果我创建一个脚本(document.createElement('script')
)并将其源设置为我的文件。当我将这个脚本注入到 DOM 中时,是否可能有人干扰它?(document.documentElement.appendChild(myScript)
)
此外,涉及哪些安全问题 这种方法?注入一个脚本,改变XMLHttpRequest
方法的open
和send
,以捕获 AJAX 调用,添加监听器,并以与原始参数完全相同的方式发送它们。
因此,假设我有以下内容:
var myScript = document.createElement('script');
myScript.src = chrome.extension.getURL('myscript.js');
var page = chrome.extension.getURL('mypage.html');
在这样的情况下,由于中间人的存在,
$.get('mypage.html')
能否返回与我的页面不同的内容?(换句话说,我是否可能无意中注入恶意页面?)
document.documentElement.append(myScript)
是否可以注入不同的脚本?假设有个中间人插入到了.src
之间,是否可以更改实际脚本?由于该脚本旨在按照链接方法更改
XMLHttpRequest
原型,因此我是否可以使用与原始调用传递的参数不同的参数进行send
操作?谢谢!