在HTML中注入Javascript代码片段
我有一个文本框,用户可以在其中输入html代码片段 示例:用户在字段中输入在HTML中注入Javascript代码片段,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我有一个文本框,用户可以在其中输入html代码片段 示例:用户在字段中输入 // <![CDATA[ <tr> <td> #= Position # </td> <td> #= Description # </td> <td> #= Location #
// <![CDATA[
<tr>
<td>
#= Position #
</td>
<td>
#= Description #
</td>
<td>
#= Location #
</td>
<td>
<a href="@Url.Action("Delete")/#= Id #" class="delete-link">Delete</a>
</td>
</tr>
// ]]>
//
#=位置#
#=说明#
#=位置#
// ]]>
我将它保存到数据库中,并在客户端ui中按需调用它作为KTemplatePart.Script(KendoUI模板)
看法
@Html.Script(
@
@Model.KTemplatePart.Script
)
其中html.Script是一个html助手
我的问题是它在客户端ui中变形
<script id="jobTemplate" type="text/javascript" >
<![CDATA[
<tr>
<td>
#= Position #
</td>
<td>
#= Description #
</td>
<td>
#= Location #
</td>
<td>
<a href="@Url.Action("Delete")/#= Id #" class="delete-link">Delete</a>
</td>
</tr>
// ]]>
</script>
![CDATA[
tr
运输署
#=位置#
/运输署
运输署
#=说明#
/运输署
运输署
#=位置#
/运输署
运输署
a href=“@Url.Action(“Delete”)/#=Id#”class=“Delete link”Delete/a
/运输署
/tr
// ]]
是否有解决方法?这是出于安全原因设计的,以防止脚本注入、攻击 允许将HTML插入DOM会使应用程序易受攻击,因此默认情况下,输入会被转义 看起来KendoUI没有内置的方法来卸载HTML,但很容易做到:
function htmlDecode(input){
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
发件人:
尝试使用此javascript筛选器
function filter(value) {
const removeTag = new RegExp("(<[a-zA-Z0-9]+>)|(</[a-zA-Z0-9]+>)", "g");
return value.replace(removeTag, "");
}
函数过滤器(值){
const removeTag=new RegExp(“()|()”,“g”);
返回值。替换(removeTag,“”);
}
您可以在codepen上看到结果
是的,我知道,但有没有办法禁用它?我只是为了一个非常特殊的案子。。。
function filter(value) {
const removeTag = new RegExp("(<[a-zA-Z0-9]+>)|(</[a-zA-Z0-9]+>)", "g");
return value.replace(removeTag, "");
}