我有一个用户控件,有几个下拉列表。每当根据新选择的值更改其中一个时,我会使用ajax重新填充下拉列表。
其中一个下拉列表的值是我想要绑定到数据字段的用户控件的最终值。
问题是ASP.NET无法识别下拉列表的值,因为它们是在客户端生成的。所以我使用了一个隐藏字段,每当在下拉列表中选择一个值时,我会将该值放在隐藏字段中,并将隐藏字段的值作为用户控件值返回,一切正常,但
我担心用户可能会将该隐藏字段的值篡改为非法值。 有没有更好的方法呢?
答案 0 :(得分:9)
如果您绑定了选择,用户也可以篡改这些值。只需像使用任何其他输入一样验证隐藏字段。并且不要担心漂亮的反馈,只要在值超出范围时抛出异常。如果有人试图摆弄你的表格,谁会在乎他是否会出现丑陋的错误。
我想更简洁地回答你的问题:你无法防止篡改客户端,你所能做的只是验证 - 服务器端
答案 1 :(得分:2)
始终验证服务器端的所有输入,添加客户端验证主要是为了向用户提供说明并防止往返。
答案 2 :(得分:1)
您应该验证服务器端的所有客户端输入,无论您可以使用任何客户端验证。来自客户端页面的输入可以通过许多不同的方式进行篡改,应该被视为不值得信任。
理想的安全做法是验证每个级别的输入,就好像来自上一级别的数据来自不受信任的来源。这意味着在客户端级别,服务器级别和SQL级别进行验证。