首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果启用了ASP .Net请求验证,是否需要对文本框值执行HtmlEncode操作?

问如果启用了ASP .Net请求验证,是否需要对文本框值执行HtmlEncode操作?
EN

Stack Overflow用户
提问于 2009-10-02 17:34:47
回答 1查看 11.5K关注 0票数 12

如果为站点启用了ASP.NET请求验证,您还需要在简单表单(例如,ASP.NET)之间来回发送HtmlEncode和HtmlDecode字符串信息吗?

EN

回答 1

Stack Overflow用户

发布于 2009-10-02 17:51:09

无论请求验证是打开还是关闭,ASP.NET文本框中的文本都没有危险。文本框控件在文本框中显示数据时会自动对数据进行编码。

当输出来自其他地方的用户的数据时,对该数据进行超文本标记语言(或JavaScript)编码是很重要的。ASP.NET的请求验证只提供最低级别的保护。它不是不可逾越的,甚至不是接近它的。它只被设计用来防御最简单的攻击。

在站点的其他部分输出内容时,您仍然需要对其进行编码。

编辑

我所说的其他地方的意思是,如果用户在文本框中输入数据,则使用ASP.NET文本框控件是安全的,因为该控件会自动对输出进行编码,以便安全地呈现输出。

例如,假设您正在使用StackOverflow的用户信息页面。当用户选择他们的用户名时,他们可以选择输入一些可能是恶意的东西,当输出到您站点的另一部分时。例如,我的StackOverflow登录名显示在每个页面的顶部,也列在"Users“页面上。

在users页面上,AJAX用于加载用户。当JavaScript计算用户名时,它不受与HTML标记相同的编码规则的约束,因此我可以在user name文本框中键入一些内容,这些内容在输出到用户列表中时可能会导致一些破坏行为。

当用户数据发送到客户端时,StackOverflow显然是正确编码的,所以它们是安全的。在将我的用户名发送到客户端之前,他们(可能)有一些JavaScript编码例程,以确保我的用户名在以JavaScript代码执行时不会变得恶意。

如果在非ASP.NET输入控件中使用它,也可能会出现问题。Input标记使用属性来定义内容,因此您可以轻松地输入可以通过请求验证检查的文本,但可能允许用户添加恶意的"mouseover“属性。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1510903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档