在让客户端向网页添加javascript之前,我应该采取哪些预防措施

What precautions should I take before I let client add javascript to a webpage?

本文关键字:我应该 预防措施 之前 客户端 网页 javascript 添加      更新时间:2023-09-26

问题:当我让客户端向其页面添加自定义JS脚本时,我应该采取什么预防措施

如果您想要更多详细信息:

我正在为一家公司做一个类似CMS的定制项目,CMS有许多"组",每个用户都"拥有"这些"组"做自己的事情。

新的要求是,一些团体希望添加谷歌分析,看看他们做得怎么样。所以我很自然地在表中添加了一列,并进行了代码调整,所以如果该列中有一些数据,我只需在主页面中使用以下行来设置脚本:

ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "CustomJs", CustomJs, true);

它工作得很好,只是,它让我思考。。。

对于熟悉如何从js访问cookie等的人来说,这真的很容易。当然,每个小组都是有管理的,只有超级管理员才能添加这个javascript,当然,他们不会愚蠢到攻击自己的小组每个组都有自己的代码,因此不可能破解其他组但仍然

让用户添加自己的javascript代码,我真的很不舒服。我可以自己监控每个小组,但小组发展得很快,我将无法再这样做。

所以,简单地说:我应该采取什么预防措施来避免任何事故?

ps:确实试过谷歌,没有任何令人信服的答案。

与其允许用户添加自己的Javascript文件,而且这里唯一的要求是谷歌分析,为什么不让他们将分析ID放入CMS,如果存在,输出相关的谷歌分析代码?

通过这种方式,您既满足了用户的要求,又避免了对恶意脚本进行保护的需要。

让用户使用Javascript通常是一个非常糟糕的主意。除非迫不得已,否则不要这么做。

我曾经遇到过一个问题,我需要让客户端使用Javascript,但客户端不一定是可信的,所以,我修改了cofeescript,使得只有一小部分可以编译Javascript,而且效果很好。这对你来说可能太过分了。

你不应该让你的用户访问cookie,这总是很痛苦的。此外,如果你是HTML5用户,就不要使用localStorage或webSQL,也不要使用document.write(),因为这是JSLint告诉你的eval的另一种形式。

而且,让人们拥有javascript的问题是,即使你相信你有值得信任的用户,也可能有人会得到密码,而你不希望那个人访问群中的所有其他帐户。

自动识别某些JavaScript代码是恶意的还是沙盒,这几乎是不可能的。如果你不想允许黑客入侵你的网站,你只有几个选择:

  1. 根本不允许用户添加JavaScript
  2. 仅允许预定义的JavaScript代码,例如Google Analytics
  3. 在允许在网站上显示所有自定义JavaScript之前,请让人员对其进行检查。永远不要相信从第三方网站加载的脚本——这些脚本可能会随着时间的推移而变化,并变成恶意的

如果您别无选择,可以考虑分离用户javascript(和cookie)的路径/域。

例如,您的用户有页面:user1.server.com并且您将用户页面保存在user1.server.com

因此,如果您将会话cookie设置为user1.server.com,则其他域(例如user2.server.com)的用户脚本将无法获取这些cookie。

另一种选择可能是在服务器JS引擎上执行所有用户的javascript(从而控制所有的I/O并限制对浏览器资源的访问)。

无论如何,没有简单易行的解决方案,所以最好考虑使用其他答案中的选项(例如,预先定义的脚本API、人工检查)。