Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止运行脚本_Javascript_Xss - Fatal编程技术网

Javascript 如何防止运行脚本

Javascript 如何防止运行脚本,javascript,xss,Javascript,Xss,所以一直阻止我发布我想要的标题,所以最终得到了一个让我发布的标题,尽管它有点糟糕,所以请随意编辑/更改它 我有用户可以填写的字段和javascript '${chart.title}' 诸如此类。仅仅去掉单引号字符就足够了,这样他们就不能将其转义回javascript了吗?或者是否有其他方法来结束以单引号字符开头的字符串 ${chart.title}插入用户在上一页中键入的标题,这样他们就可以自然地键入类似“title'+callMethod()+'RestOfTitle”的内容,将call

所以一直阻止我发布我想要的标题,所以最终得到了一个让我发布的标题,尽管它有点糟糕,所以请随意编辑/更改它

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

'${chart.title}' 
诸如此类。仅仅去掉单引号字符就足够了,这样他们就不能将其转义回javascript了吗?或者是否有其他方法来结束以单引号字符开头的字符串

${chart.title}插入用户在上一页中键入的标题,这样他们就可以自然地键入类似“title'+callMethod()+'RestOfTitle”的内容,将callMethod注入到我的javascript中

谢谢,
Dean

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

如果要允许标题中的任何内容,可以使用转义函数。


仅仅剥离单引号字符的字符串显然是不够的。考虑新的线路有一个原因。

有两种选择

首先,采用非常严格的方式,为标题输入所谓的字段,并始终对输出到页面的文本进行编码。这将过滤掉所有不需要的(和潜在危险的)字符,并确保如果其中一些字符通过了筛选(或有人在应用筛选后更新文本以包含一些js代码),编码过程将使所有恶意js脚本无法运行(它将其转换为纯文本)

第二,您确实允许用户输入他们想要的内容(这是一种非常不推荐的方式,但有时开发人员要求这样做),但始终对输出到页面的文本进行编码


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

是否将输入传递给服务器?如果你是,我相信那将是一个XSS过滤器的地方。