通过使用不受信任的字符串(require.js)调用require()的安全性问题

时间:2015-02-17 06:55:46

标签: javascript security requirejs

我的浏览器应用程序使用require.js。该应用程序在屏幕上显示许多不同小部件之一。 URL片段包含窗口小部件的路径(require.js路径),然后有一个要求动态加载它的调用:

var moduleName = getUrlFragement('widget'); // accesses window.location
require(moduleName);

moduleName是不受信任的字符串。用户可以随心所欲地制作它。

这有什么安全问题?

到目前为止,这是我自己的发现:

  • 攻击者无法从其他域加载任意网址
  • 攻击者无法从同一域中加载任意网址
  • 攻击者可以强制加载我的应用程序定义的任何模块,这将运行模块具有的任何初始化逻辑。 不允许这样做

我错过了什么吗?

1 个答案:

答案 0 :(得分:-1)

没有。您已完全准确地捕获了安全问题。