如何避免ASP.NET中的跨站点脚本

时间:2011-05-03 19:03:14

标签: security xss cross-site

我有一个带有文本框的ASP.NET表单。用户可以输入任何字符,数字等。我不应该限制用户过滤危险字符。但我需要阻止跨站点脚本。

用户可以像这样输入任何类似alert('hi')的文本。

数据应保存为DB中的数据。它也应该返回并以标签形式显示在标签中。

如果没有跨站点脚本,如何实现这一目标

1 个答案:

答案 0 :(得分:1)

好吧,我认为您应该考虑某些限制用户可以输入的内容。你不想要空字节或不可打印的字符吗?即使您接受的不仅仅是字母数字值,您也应该决定允许使用哪些字符,并使用简单正则表达式(当然还有开始和结束锚点)排除其余字符。

然后,防止XSS的方法是在显示值时对值进行编码。有很多方法可以做到这一点,但如果你问我,使用Microsoft Web Protection Library的AntiXSS类是最好的。您可以根据是否在HTML元素,属性,JavaScript等中呈现输出来对输出进行编码。