Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
在维护HTML时避免javascript注入?_Javascript_Jquery_Code Injection - Fatal编程技术网

在维护HTML时避免javascript注入?

在维护HTML时避免javascript注入?,javascript,jquery,code-injection,Javascript,Jquery,Code Injection,当注入alert('test)时,屏幕上会出现一个显示test的警报框。我对html进行了编码,但随后它显示为纯文本 我从数据库中获取dataHtml的值。由于某些原因,我必须使用javascript/jquery在客户端完成这一切 如何在维护html时忽略这些标记/注入?将设置了type属性的script元素附加到text/javascript以外的内容,例如: $("#id").append(dataHtml); 警报(“测试”); 此脚本标记不会被解析或作为javascript运行。

当注入
alert('test)
时,屏幕上会出现一个显示test的警报框。我对html进行了编码,但随后它显示为纯文本

我从数据库中获取dataHtml的值。由于某些原因,我必须使用javascript/jquery在客户端完成这一切


如何在维护html时忽略这些标记/注入?

将设置了type属性的script元素附加到text/javascript以外的内容,例如:

 $("#id").append(dataHtml);
警报(“测试”);

此脚本标记不会被解析或作为javascript运行。

您可以使用简单的正则表达式删除所有脚本标记:

<script type="text/template">alert('test');</script>
dataHtml=dataHtml.replace(/[\s\s]*.[\s]*/g,”);
一些解释:

  • *
    :除换行符以外的所有字符(*次)
  • [\s\s]*
    :换行符

若要测试所有内容是否与预期相符,您可以使用联机工具和dataHtml值示例(例如)。

我是否正确理解您要排除所有脚本标记?是的,我要。任何类似的恶意行为。
dataHtml = dataHtml.replace(/<script.*>[\s\S]*.*[\s\S]*<\/script>/g,"");