我想在我的网站区域允许用户提供的Javascript。
由于
答案 0 :(得分:6)
我认为正确答案是1。
只要您允许使用Javascript,就可以打开自己和用户的各种问题。没有完美的方法来清理Javascript,像Troll Army这样的人会把它作为个人使命来搞砸你。
答案 1 :(得分:4)
1。这完全是疯了吗?
不要这么认为,而是靠近。我们来看看。
2。是否有任何Javascript清理程序脚本或良好的正则表达式模式来扫描警报,iframe,远程脚本包括和其他恶意Javascript?
是的,至少有Google Caja和ADSafe来清理代码,允许它沙盒。但我不知道他们提供的信任程度如何。
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)
答案 7 :(得分:0)
将其托管在其他域上。浏览器中的同源安全策略将阻止用户提交的JS攻击您的站点。
仅在不同的子域上托管它是不够的,因为子域可以在更高级别的域上设置cookie,这可以用于会话固定攻击。