防止JavaScript'功能'在客户端上运行

时间:2016-03-06 21:53:17

标签: javascript security client

是否有某种方法可以阻止某些'功能'在JavaScript中运行在客户端上。我担心像Mimikatz这样的东西可以从内存中运行并使黑客能够破坏主机。理想情况下,这将检测不允许运行的可定义代码并阻止执行。

1 个答案:

答案 0 :(得分:0)

您所描述的内容存在一些问题。首先,它很容易混淆JavaScript。例如,假设您不希望执行eval函数。设计一个可以删除对eval的直接调用的正则表达式非常容易。除非它不再被命名为eval怎么办?

var e = eval;
e('evil');`

你也可以发现这一点,但是你最终还是试图预测混淆技术。如果你真的想这样做,我建议从像Greasemonkey或Tampermonkey这样的浏览器插件开始。这将是一项很多工作,你会得到很多误报。

另一个问题是决定阻止什么。根据实现情况,JavaScript中只有十几个global functions,另外还有几十个全局对象。哪个会被封锁?除非JavaScript引擎或浏览器存在漏洞,否则它们都不具有内在的危险性。如果您意识到漏洞,那么修补将比过滤JavaScript更安全,更容易。

JavaScript在攻击中使用的最常见方式是通过跨站点脚本(XSS)。这两种主要方法是使用恶意脚本窃取域中的数据,或重新格式化页面以提示用户输入敏感数据(通常是凭据或支付卡号)。这两种技术都使用与合法页面相同的JavaScript函数,因此通过分析JavaScript实际上无法阻止它们。可以通过在请求参数中查找JavaScript来阻止简单的XSS攻击,但浏览器已经这样做了。

您对Mimikatz的具体示例不是针对特定于JavaScript的。 Mimikatz是后期利用的通用工具。换句话说,攻击者必须首先找到进入系统的方法,然后使用Mimikatz使其更容易留在并执行恶作剧。同样,如果没有JavaScript引擎或浏览器中的初始漏洞,攻击者就无法使用JS运行Mimikatz之类的东西。

如果您仍然担心,请查看NoScript等插件。它支持定义哪些域可以运行JavaScript的策略。它并不像你想要的那么精细,但它很容易设置。