【发布时间】:2011-09-01 09:03:04
【问题描述】:
我刚刚发现,因为默认情况下 ValidateRequest = true,所以默认情况下,您不能在任何输入字段中输入“”。
对 XSS 攻击了解不多,对我来说,这似乎相当严格。
为了解决这个问题,我意识到我可以使用 validateRequest = false 来对用户数据进行编码。显然,Microsoft 有充分的理由设置 validateRequest = true,所以现在的问题是我有一个包含很多页面的整个站点,所有这些都存在“无法放置 问题”。
我的问题是我只有两个选择吗?
1) 保留 validateRequest = true 并且根本不允许用户输入 2) 切换 validateRequest = false 并采取预防措施。
如果为 2,我是否要对所有数据输入进行编码?就像从登录名和密码到用户文本到搜索条件的文本字段一样?还是我只需要对某些输入进行操作?如果是,我应该定位哪些领域?
【问题讨论】:
-
据我所知,您是正确的,因为您只有两个选择。我不知道防止用户输入特殊字符的干净方法。如果用户输入 ,您不希望抛出异常。而且您不想设置 ValidateRequest="False" 然后有人向页面添加输入控件并忘记在使用它之前对其进行正确编码,从而使您容易受到脚本攻击。我也不满意。我认为微软只是在 4.0 中对此进行了处理。希望他们能在未来的版本中找到更好的方法来处理这个问题。
标签: c# asp.net html validate-request