如何防止脚本运行

时间:2013-05-15 20:41:30

标签: javascript xss

所以一直阻止我发布我想要的标题,所以终于有了一个标题让我发帖虽然有点糟透,所以随时编辑/改变它。

我有用户可填写的字段以及我们的javascript

'${chart.title}' 

和那样的东西。仅仅删除单引号字符就足以让它们无法将其转移回javascript?或者是否有其他方法可以关闭以单引号字符开头的字符串。

$ {chart.title}在前一页上插入用户输入的标题,所以很自然地他们可以输入类似“Title”+ callMethod()+'RestOfTitle'的东西,将callMethod注入我的javascript。

感谢, 迪安

2 个答案:

答案 0 :(得分:1)

最好的方法是将输入限制为字母数字和空格字符。

如果要允许标题内的任何内容,可以使用转义功能。 http://xkr.us/articles/javascript/encode-compare/

剥离单引号字符串绝对不够。想到新线路有一个原因。

答案 1 :(得分:1)

有几种选择。

首先采用非常严格的方式,为你的标题输入字段做所谓的white-list validation,并始终对输出到页面的文本进行编码。这将过滤掉所有不需要的(也可能是危险的)字符,并确保如果其中一些字符通过过滤器(或者有人在应用过滤器后更新文本以包含一些js代码),编码过程会使所有恶意js脚本无法运行(它把它变成纯文本。)

其次,你确实让你的用户输入他们想要的东西(这是非常不推荐的方式,但有时开发人员要求这样做),但总是对输出到页面的文本进行编码。

您可以使用正则表达式自己实现白名单验证,也可以使用其中一个库。