我想阻止XSS,所以我在使用HTMLUtility.HtmlEncode
对所有数据进行编码,然后在ASPNET TextBox中显示它。但是,我没有为& 显示正确的字符,而是看到&安培;
我该怎么办才能修复它?
谢谢!
答案 0 :(得分:0)
取自微软的How To: Prevent Cross-Site Scripting in ASP.NET
过滤用户输入
如果您的网页需要接受一系列HTML元素,请使用 例如,通过某种富文本输入字段,您必须禁用 页面的ASP.NET请求验证。如果你有几页 这样做,创建一个只允许HTML元素的过滤器 你想接受。通常的做法是将格式限制为 安全的HTML元素,如bold()和italic()。
安全地允许受限制的HTML输入
Disable ASP.NET request validation by the adding the ValidateRequest="false" attribute to the @ Page directive. Encode the string input with the HtmlEncode method. **Use a StringBuilder and call its Replace method to selectively remove the encoding on the HTML elements that you want to permit.**
基于此,似乎最佳做法是搜索和替换&放大器;与&amp ;.看起来不是很优雅,但这直接来自MSDN。
答案 1 :(得分:0)
您不必显式编码ASPNET TextBox。对于文本框,输出已经编码。如果再次对其进行编码,它将被双重编码。这就是为什么它显示&