我有一个字符串,其中包含有效的html标记,如<table>
或<br/>
,并显示在包含数据库的工具提示中。安全团队认为这是一个关键问题,因为这可能允许用户插入<script> alert(...)
网络上的任何地方,我都被告知要使用HttpUtility.HtmlEncode()
。问题是这也是我的有效标签的编码。
我正在寻找的并且我无法找到的是一个RegEx,它允许我过滤xss注入而不会剥离我的有效html标记。
这样的事情是否存在?
答案 0 :(得分:0)
应该非常简单,Html对整个内容进行编码,然后使用正则表达式将<table>
的所有实例替换为<table>
等。示例正则表达式为"<(\/?(table|span|p|br|tr|td|th|thead|tbody|tfoot|b|i)\s*\\?)>"
并替换为&# 34;&LT; \ 1 GT;&#34;
这应该让你非常接近。当然,它不会允许复杂的标签,如<table id=...>
等,但你必须决定这是否是一个要求。或者使用降价编辑器。