c# - 使用 HTML 编码字符的 ASP.NET 请求验证

标签 c# asp.net validation

我有一个表单中的文本框,需要接受带有 HTML 标签的输入。

提交带有 HTML 标记的输入会使应用程序抛出 HttpRequestValidationException,除非我们使用 HttpUtility.HtmlEncode。到目前为止很简单。

但是,输入也可能包含符号,例如“度”符号 (°)。当这些也是 HTML 编码时,它们变成数字转义码,在本例中为 °。这些代码也会导致抛出 HttpRequestValidationException,但问题是为什么?

我不明白为什么数字转义码被认为具有潜在危险,尤其是当 ° 作为输入正常工作时。

我似乎被卡住了,因为标签导致输入按原样失败,而 HTML 编码输入由于数字转义而失败。到目前为止,我的解决方案是 HTML 编码,然后正则表达式用 HTML 解码形式替换转义序列,但我不确定这是否是一个安全的解决方案,因为我认为转义序列被视为危险是有原因的。

最佳答案

这是由于 ASP.NET 内置 Cross Site Scripting验证能力。有一些 ASP.NET 允许的和不允许的列表,这里是:ASP.NET request validation causes: is there a list?

关于 # 编码字符的具体情况,这里有完整的 XSS 攻击引用:XSS (Cross Site Scripting) Cheat Sheet这证明了这些攻击有多么复杂,以及为什么禁止使用编码字符。

关于c# - 使用 HTML 编码字符的 ASP.NET 请求验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3750130/

相关文章:

c# - 无论如何,有没有办法检测方法将调用什么?

c# - 如何在 Windows 通用应用程序中显示来自网络文件夹或本地驱动器的图像

node.js - 如何使用 Loopback 使用 Mocha 测试正确的数据验证?

javascript - 包含多个文件和其他输入字段的表单验证

c# - 如何在选择另一个@Html.DropDownList 后填充@Html.DropDownList

c# - ASP.NET MVC 数据注释验证 ErrorMessageResourceType

c# - json 到 c# 反序列化与 json.net

c# - 单击 DataGrid 元素打开新 View (WPF xaml 应用程序)

asp.net - 在asp.net中使用Enterprise Library实现日志文件

c# - 缓存页面的仅限管理员内容