gpt4 book ai didi

asp.net - 如果启用了 ASP .Net 请求验证,是否需要 HtmlEncode 文本框值?

转载 作者:行者123 更新时间:2023-12-04 00:07:18 25 4
gpt4 key购买 nike

如果为站点启用了 ASP.NET 请求验证,您是否仍然需要将 HtmlEncode 和 HtmlDecode 字符串信息与简单表单(例如 ASP 文本框)进行相互转换?

最佳答案

If ASP.NET Request Validation is enabled for a site, do you still need to HtmlEncode



ASP.NET 请求验证是一种尝试解决愚蠢作者损坏程序的技巧。不要编写损坏的程序。

您写入 HTML 页面的任何文本字符串都必须是 HTML 编码的;这是一个正确性的问题,而不仅仅是安全性(这是正确性的一个子集)。即使请求验证可以神奇地消除任何可能的 XSS 攻击(事实并非如此),未能通过 HtmlEncode 文本输出仍然会让您产生格式错误的输出,从而破坏您的数据。假设我在论坛发帖讨论一些变量 a , bc并想说:
a<b b>c b>a

如果这与未编码的 HTML 源代码相呼应,我会得到:

ac b>a



也许页面的其余部分也会加粗。哎呀!

请求验证是虚假的,不应依赖。默认情况下并“推荐用于所有生产环境”令人伤心,让我严重怀疑 ASP.NET 团队的理智。

如果您正确编写了程序,则不需要它,它只会妨碍您。 (例如,如果 SO 使用它,我将无法发布提及 <script> 标签的帖子。)如果您没有正确编写程序,请求验证不会修复您的安全漏洞,它只会让它们变得更加模糊。

and HtmlDecode string information



您通常不会在 Web 应用程序中对任何内容进行 HtmlDecode。您进行编码以将内容推送到 HTML 中,但是当内容从提交的表单返回时,它是纯文本,而不是 HTML 编码的。

to and from simple forms (e.g. ASP Textboxes)?



文本框应该没问题;设置他们的 .Text确实做了任何必要的编码,使您在文本框中出现的确切字符串。但是。有些看起来应该自动进行 HTML 编码的东西实际上不是。例如:
myTextBox.Text= "a<b b>c"; // Fine!
myLabel.Text= "a<b b>c"; // Broken!

哦,亲爱的。 Text并不总是意味着文本。 Sometimes, it actually means HTML .谢谢微软,这样的话题已经太多人难以理解了。

关于asp.net - 如果启用了 ASP .Net 请求验证,是否需要 HtmlEncode 文本框值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1510903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com