0

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

用户可以像这样输入任何文本,例如 alert('hi')。

数据应保存在数据库中。它也应该返回并按原样显示在标签中。

如何在没有跨站点脚本的情况下实现这一目标

4

1 回答 1

1

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

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

于 2011-05-03T19:12:10.820 回答