是否可以清理Javascript代码?

时间:2010-08-25 23:43:47

标签: javascript xss

我想在我的网站区域允许用户提供的Javascript。

  1. 这完全是疯了吗?
  2. 是否有任何Javascript清理程序脚本或良好的正则表达式模式来扫描警报,iframe,远程脚本包括和其他恶意Javascript?
  3. 是否应该手动授权此过程(由人检查Javascript)?
  4. 允许用户仅使用框架(如jQuery)而不是让他们访问实际的Javascript更合理吗?这样可以更容易监控。

由于

8 个答案:

答案 0 :(得分:6)

我认为正确答案是1。

只要您允许使用Javascript,就可以打开自己和用户的各种问题。没有完美的方法来清理Javascript,像Troll Army这样的人会把它作为个人使命来搞砸你。

答案 1 :(得分:4)

  

1。这完全是疯了吗?

不要这么认为,而是靠近。我们来看看。

  

2。是否有任何Javascript清理程序脚本或良好的正则表达式模式来扫描警报,iframe,远程脚本包括和其他恶意Javascript?

是的,至少有Google CajaADSafe来清理代码,允许它沙盒。但我不知道他们提供的信任程度如何。

  

3。是否应该手动授权此过程(由人检查Javascript)?

沙箱可能会失败,因此这将是一个明智的解决方案,具体取决于被恶意(或错误)代码攻击的风险和权衡。

  

4。允许用户仅使用框架(如jQuery)而不是让他们访问实际的Javascript更合理吗?这样可以更容易监控。

JQuery只是简单的Javascript,所以如果你试图保护免受攻击,它根本无济于事。

如果防止这类攻击至关重要,您可以实现自定义语言,在后端解析并生成受控制的安全javascript;或者您可以考虑另一种策略,例如提供API并从应用的第三方组件访问它。

答案 2 :(得分:3)

看看Google Caja

  

Caja允许网站安全地嵌入来自第三方的DHTML Web应用程序,并实现嵌入页面和嵌入式应用程序之间的丰富交互。它使用对象功能安全模型来实现各种灵活的安全策略,以便包含页面可以有效地控制嵌入式应用程序对用户数据的使用,并允许小工具防止小工具的UI元素之间的干扰。

答案 3 :(得分:1)

除了检查脚本包含之类的邪恶内容之外,我还会选择您希望使用的少数命令的基于正则表达式的白名单。然后让人员授权并向白名单添加新的可接受命令。

答案 4 :(得分:1)

想想可以用javascript做的所有事情。然后想想如果你能在别人的网站上做这些事你会做的事情。这些是人们会做的事情,因为他们可以,或者找出他们是否可以。我认为这根本不是一个好主意。

答案 5 :(得分:1)

设计/实现您自己的受限制脚本语言可能更安全,这种语言与JavaScript非常相似,但是在您自己的解释器的控制之下。

答案 6 :(得分:0)

  1. 可能。做坏事的范围将远远大于你只是允许HTML,但试图避免分配JavaScript。
  2. 我不知道。
  3. 好吧,两件事:你真的想花时间这么做吗?如果你这样做,你最好确保他们看到javascript 代码而不是实际的实时JavaScript!
  4. 我可以'看看为什么这会有所不同,除非你确实有人批准帖子,而且这个人恰好在家里使用jQuery而不是简单的JavaScript。

答案 7 :(得分:0)

将其托管在其他域上。浏览器中的同源安全策略将阻止用户提交的JS攻击您的站点。

仅在不同的子域上托管它是不够的,因为子域可以在更高级别的域上设置cookie,这可以用于会话固定攻击。