ASP.Net验证控件相对于JavaScript的优势

ASP.Net验证控件相对于JavaScript的优势,javascript,asp.net,validation,Javascript,Asp.net,Validation,有人能解释一下使用ASP.Net验证控件和javascript进行客户端验证之间的区别吗?我的工作是分析开发人员创建的代码/我已经阅读了几篇文章,但与使用验证控件相比,开发人员更喜欢使用javascript。因此,我想了解使用javascript而不是验证控件的必要性。不同之处在于ASP.NET客户端控件在服务器上执行验证,这是您应该始终执行的操作。客户端javascript验证是可选的。它允许更具响应性的UI,减少往返服务器的次数,但它不提供任何级别的安全性,因为用户只需在浏览器中关闭java

有人能解释一下使用ASP.Net验证控件和javascript进行客户端验证之间的区别吗?我的工作是分析开发人员创建的代码/我已经阅读了几篇文章,但与使用验证控件相比,开发人员更喜欢使用javascript。因此,我想了解使用javascript而不是验证控件的必要性。

不同之处在于ASP.NET客户端控件在服务器上执行验证,这是您应该始终执行的操作。客户端javascript验证是可选的。它允许更具响应性的UI,减少往返服务器的次数,但它不提供任何级别的安全性,因为用户只需在浏览器中关闭javascript即可。ASP.NET控件除了服务器端之外,还可以生成客户端验证。

不同之处在于ASP.NET客户端控件在服务器上执行验证,这是您应该始终执行的操作。客户端javascript验证是可选的。它允许更具响应性的UI,减少往返服务器的次数,但它不提供任何级别的安全性,因为用户只需在浏览器中关闭javascript即可。ASP.NET控件除了可以生成服务器端验证外,还可以生成客户端验证。

客户端验证 您希望首先在客户端验证输入,因为您可以向普通用户提供更好的反馈。例如,如果他们输入了无效的电子邮件地址并移动到下一个字段,您可以立即显示错误消息。这样,用户可以在提交表单之前更正每个字段

如果您只在服务器上进行验证,则他们必须提交表单,获取错误消息,并尝试查找问题

(这种痛苦可以通过制作“粘性”表单来缓解,其中服务器会记住在每个字段中输入的内容并重新填写,但客户端验证速度更快。)

ASP.Net控件验证(服务器端) 您希望在服务器端进行验证,因为您可以防止恶意用户,恶意用户可以轻松绕过您的JavaScript并向服务器提交危险的输入

信任你的用户界面是非常危险的他们不仅可以滥用您的UI,而且可能根本不使用您的UI,甚至不使用浏览器。如果用户手动编辑URL,或运行自己的Javascript,或使用其他工具调整HTTP请求,该怎么办?例如,如果他们从curl发送自定义HTTP请求会怎么样

不允许这样做不仅从安全角度看是幼稚的,而且也是非标准的:应该允许客户机以他们希望的任何方式发送HTTP,并且您应该正确响应。这包括验证

服务器端验证对于兼容性也很重要
-并非所有用户都启用了JavaScript。

客户端 您希望首先在客户端验证输入,因为您可以向普通用户提供更好的反馈。例如,如果他们输入了无效的电子邮件地址并移动到下一个字段,您可以立即显示错误消息。这样,用户可以在提交表单之前更正每个字段

如果您只在服务器上进行验证,则他们必须提交表单,获取错误消息,并尝试查找问题

(这种痛苦可以通过制作“粘性”表单来缓解,其中服务器会记住在每个字段中输入的内容并重新填写,但客户端验证速度更快。)

ASP.Net控件验证(服务器端) 您希望在服务器端进行验证,因为您可以防止恶意用户,恶意用户可以轻松绕过您的JavaScript并向服务器提交危险的输入

信任你的用户界面是非常危险的他们不仅可以滥用您的UI,而且可能根本不使用您的UI,甚至不使用浏览器。如果用户手动编辑URL,或运行自己的Javascript,或使用其他工具调整HTTP请求,该怎么办?例如,如果他们从curl发送自定义HTTP请求会怎么样

不允许这样做不仅从安全角度看是幼稚的,而且也是非标准的:应该允许客户机以他们希望的任何方式发送HTTP,并且您应该正确响应。这包括验证


服务器端验证对于兼容性也很重要
——并非所有用户都会启用JavaScript。

如果不清楚,您应该同时执行客户端和服务器端验证。如果您必须选择一个,请选择服务器端。万一不清楚,您应该同时选择客户端和服务器端。如果必须选择一个,请选择服务器端。谢谢@Darin。我曾在许多实例中看到,即使对于电子邮件验证,高级开发人员也选择javascript而不是使用现有的验证器。如果使用可用的验证控件比使用javascript更安全,那么为什么开发人员更喜欢javascript?高级开发人员两者都使用。它们从不仅用javascript替换服务器端验证。如果他们这样做,他们作为开发人员的资历是有争议的。@DarinDimitrov为什么asp.net客户端控件会在服务器上执行验证!!!!!你这是什么意思,这些控件不应该生成客户端javascript代码来验证用户输入吗?谢谢@Darin。我曾在许多实例中看到,即使对于电子邮件验证,高级开发人员也选择javascript而不是使用现有的验证器。如果使用可用的验证控件比使用javascript更安全,那么为什么开发人员更喜欢javascript?高级开发人员两者都使用。它们从不仅用javascript替换服务器端验证。如果他们这样做,他们作为开发人员的资历是有争议的。@DarinDimitrov asp.net客户端控件是如何执行的