使用微软的AntiXssLibrary,你如何处理以后需要编辑的输入?
例如:
用户输入:<i>title</i>
在数据库中另存为:<i>title</i>
在编辑页面的文本框中,它显示类似于:<i>title</i>的内容,因为我在文本框中显示之前已经对其进行了编码。
用户不喜欢这样。
在写入输入控件时不编码可以吗?
更新:
我还在努力弄清楚这件事。下面的答案似乎表明要在显示之前对字符串进行解码,但这不会允许XSS攻击吗?
一个用户说,解码输入字段值中的字符串是可以的,但被否决了。
发布于 2009-05-15 15:09:11
看起来你编码了不止一次。在ASP.NET中,使用微软的AntiXss库,您可以使用HtmlAttributeEncode方法对不受信任的输入进行编码:
<input type="text" value="<%= AntiXss.HtmlAttributeEncode("<i>title</i>") %>" />这会导致
<input type="text" value="<i>title</i>" />并在输入框中正确显示为<i>title</i>。
发布于 2008-11-28 01:35:48
您的问题似乎是双重编码;HTML需要转义一次(这样就可以将其插入到页面上的HTML中而不会出现问题),但是两次都会导致编码后的版本出现在字面上。
发布于 2008-11-28 01:29:09
您可以调用HTTPUtility.HTMLDecode(MyString)将文本返回到未编码的形式。
https://stackoverflow.com/questions/324905
复制相似问题