有人可以解释使用 ASP.Net 验证控件和 javascript 进行客户端验证之间的区别吗?我的工作是分析开发人员创建的代码/我已经阅读了几篇文章,但实时开发人员更喜欢 javascript 而不是使用验证控件。因此想了解使用 javascript 而不是验证控件的必要性。
2 回答
不同之处在于 ASP.NET 客户端控件在服务器上执行验证,这是您应该始终执行的操作。客户端 javascript 验证是可选的。它允许响应更快的 UI,减少与服务器的往返次数,但它不提供任何级别的安全性,因为用户可以简单地在浏览器中关闭 javascript。除了服务器端之外,ASP.NET 控件还可以生成客户端验证。
客户端
您希望首先在客户端验证输入,因为您可以为普通用户提供更好的反馈。例如,如果他们输入了无效的电子邮件地址并移至下一个字段,您可以立即显示错误消息。这样,用户可以在提交表单之前更正每个字段。
如果您只在服务器上进行验证,他们必须提交表单、收到错误消息并尝试找出问题。
(这种痛苦可以通过制作“粘性”表单来缓解,服务器会记住每个字段中输入的内容并将其填回,但客户端验证仍然更快。)
ASP.Net 控件验证(服务器端)
您希望在服务器端进行验证,因为您可以防范恶意用户,他们可以轻松绕过您的 JavaScript 并向服务器提交危险输入。
信任你的 UI 是非常危险的。他们不仅可以滥用您的 UI,而且他们可能根本不使用您的 UI,甚至是浏览器。如果用户手动编辑 URL,或者运行他们自己的 Javascript,或者使用其他工具调整他们的 HTTP 请求怎么办?例如,如果他们从 curl 发送自定义 HTTP 请求怎么办?
不允许这样做不仅从安全角度来看是幼稚的,而且也是不标准的:应该允许客户端以他们希望的任何方式发送 HTTP,并且您应该正确响应。这包括验证。
服务器端验证对于兼容性也很重要- 并非所有用户都会启用 JavaScript。