我有一个包含一个单选按钮列表中的ASP.NET Web窗体。每个单选按钮都有一个与之相关的值。单选按钮列表具有验证器控件,以确保至少检查一个按钮。ASP.NET网页表单验证单选按钮值吗?
<input name="Country" value="US" id="CountryUS" type="radio" runat="server" />
<input name="Country" value="Other" id="CountryOther" type="radio" runat="server" />
据我所知,HTTP单选按钮转换成名称/值对,其中名称是单选按钮的名称和值相关联的值(它不是真/假)。
如果第一个单选按钮被选中,HTTP流量将是
Country=US
以及如果所述第二个被选中时,HTTP通信将是
Country=Other
因此,该值是自由和清楚被篡改(例如与Paros)几乎与查询字符串可能被篡改一样容易。
Country=Other'+DROP+TABLE+Users
通常在页面上,您可以调用page.Validate()来触发服务器端验证。然而,在这种情况下,单选按钮的验证只是一个选定的索引验证器。 没有验证程序明确检查值。
我怎么知道客户没有与价值篡改?它在ViewState中是否重复,并且ASP.NET会自动检查它?或者黑客可以将任何他们想要的东西放在那里,并且将一个字符串注入我的系统(除非我用代码手动验证它)?
所有Web请求都可以被拦截,这就是为什么我们有SSL和参数化查询。 – IrishChieftain
更正:所有Web请求都可以被拦截,这就是为什么我们有SSL,参数化查询,**和服务器端验证**。在这种情况下,字段应该根据白名单{“US”,“Other}进行验证。我的问题是我是否需要自己做这个或者框架是否为我做,例如,当我打电话给page.Validate(doesn'或者当框架解析表单/帖子来填充我的web控件的状态(更可能) –
我会使用一个适当的RadioButtonList与一个CustomValidator ...然后你可以实现逻辑来验证你自己服务器端。 – IrishChieftain