[英]C# ASP.NET textbox double HTMLEncode and Preventing XSS
我想防止XSS,所以在使用HTMLUtility.HtmlEncode
对所有数据进行编码之前,将其显示在ASPNET TextBox中。 但是,我没有显示&的适当字符,而是看到&。 。
我该怎么解决?
谢谢!
摘自Microsoft的“ 如何:防止ASP.NET中的跨站点脚本”
过滤用户输入
如果您的页面需要接受一定范围的HTML元素,例如通过某种富文本输入字段,则必须禁用该页面的ASP.NET请求验证。 如果有多个页面可以执行此操作,请创建一个过滤器,该过滤器仅允许您要接受的HTML元素。 通常的做法是将格式限制为安全的HTML元素,例如粗体()和斜体()。
为了安全地允许受限制的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.**
基于此,最佳做法似乎是搜索和替换& 与&。 看起来不太优雅,但这直接来自MSDN。
您不必显式编码ASPNET TextBox。 对于文本框,输出已经编码。 如果再次对其进行编码,它将被双重编码。 这就是为什么它显示&
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.