c#编码字符串以防止XSS注入(RegEx ??)

时间:2015-07-10 20:44:22

标签: c# regex

我有一个字符串,其中包含有效的html标记,如<table><br/>,并显示在包含数据库的工具提示中。安全团队认为这是一个关键问题,因为这可能允许用户插入<script> alert(...)

的xss攻击

网络上的任何地方,我都被告知要使用HttpUtility.HtmlEncode()。问题是这也是我的有效标签的编码。

我正在寻找的并且我无法找到的是一个RegEx,它允许我过滤xss注入而不会剥离我的有效html标记。

这样的事情是否存在?

1 个答案:

答案 0 :(得分:0)

应该非常简单,Html对整个内容进行编码,然后使用正则表达式将&lt;table&gt;的所有实例替换为<table>等。示例正则表达式为"&lt;(\/?(table|span|p|br|tr|td|th|thead|tbody|tfoot|b|i)\s*\\?)&gt;"并替换为&# 34;&LT; \ 1 GT;&#34;

这应该让你非常接近。当然,它不会允许复杂的标签,如<table id=...>等,但你必须决定这是否是一个要求。或者使用降价编辑器。