【发布时间】:2015-07-11 09:44:40
【问题描述】:
我正在开发一个在页面中注入脚本的扩展。
扩展基本上是一个内容脚本,它将另一个脚本注入到 DOM 中。 (Why not just a content script?)
(我的代码没有任何问题,运行良好。这里的主要目的只是了解 Web 开发中的安全问题)
注入的脚本是我的扩展中的一个源文件,我通过 JQuery.get 获取它,使用来自chrome.extension.getURL('myscript.js') 的地址。
是否有任何我应该注意的安全问题?
页面不是https,这个get 可以返回与我的脚本不同的内容吗?
我也使用相同的方法插入 HTML 内容。 HTML 文件来自我的扩展,就像脚本一样。中间人是否有可能破坏响应文本??
如果存在此类安全问题,避免此类安全问题的常见做法是什么?
不同的是,如果我创建一个脚本 (document.createElement('script')) 并将其源设置为我的文件。当我将这个脚本注入 dom 时,有人可能会干涉吗? (document.documentElement.appendChild(myScipt))
另外,涉及this approach 的安全问题是什么?注入更改 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中使用与原始调用传递的参数不同的参数?
谢谢!
【问题讨论】:
-
Content scripts 应该用于注入此类代码(另请参阅同一文档中的 Programmatic injection)。
-
它必须通过描述的内容脚本注入到 DOM 中。这是它唯一的工作方式。
-
究竟是什么阻止您使用内容脚本或 chrome.tabs.executeScript?
-
它不起作用,您可以在链接方法中查看所有详细信息。
-
我从未尝试过“chrome.tabs.executeScript”,我可能会看看。它比我现在做的更安全吗?
标签: javascript jquery ajax security google-chrome-extension