繁体   English   中英

验证服务器控件是否比javascript更好?

[英]Are validation server controls better than javascript in any way?

验证服务器控件是否比javascript更好? 它们是否限制我们,因为我们只能使用它们提供的功能。 请帮帮我。 我在自己的博客上阅读了验证服务器控件

最好在客户端服务器上使用验证:

  • 在客户端上进行验证可以提供即时反馈,而无需向服务器进行持续的往返。 这样可以获得更好的用户体验。
  • 需要在服务器上进行验证,以确保不会收到错误的数据。 毕竟,恶意用户可以轻松地将数据发布到您的服务器,而无需通过客户端验证。

现在,至于如何实现验证 - 如果内置的“工具包”控件为您执行适当的验证,那显然比编写自己的验证代码更简单。 ASP.NET验证器为您执行客户端和服务器端验证。 BaseValidator文档

验证控件始终验证服务器上的关联输入控件。 验证控件还具有完整的客户端实现,允许启用脚本的浏览器(如Microsoft Internet Explorer 4.0及更高版本)在客户端上执行验证。 客户端验证通过在将用户输入发送到服务器之前检查来增强验证过程。 这允许在提交表单之前在客户端上检测错误,从而避免服务器端验证所需的信息的往返。

通常,您始终应该执行服务器端数据操作。 这可以确保您保护服务器免受恶意伪造的请求,数据存储区可以输入无效数据(只要数据库不自行处理)。 如果您希望使用工具或框架进行服务器端输入验证,如您链接的文章中所述,则由您自己决定。

客户端验证(例如javascript)也很有用,但出于不同的原因:它允许您提交数据之前向用户提供有用的信息。

因此,它不是/或更多的和/和。 你实际上并没有在这里做任何双重工作。 客户端和服务器端验证仅用于不同的目的(分别增强用户的可用性和保护服务的逻辑和安全性)。

服务器和客户端验证可能由相同的业务逻辑管理(例如,对于邮政编码,您可以使用相同的正则表达式来检查和拒绝服务器端和客户端的输入)。 在这种情况下,您需要同步两个验证层(可以通过从与服务器端服务代码相同的业务逻辑模型生成页面+ javascript逻辑来完成)。

如果您仍然认为自己正在进行双重工作,那么请选择进行服务器端验证。 (您当然可以使用它来通知客户端,但它会做出响应。)客户端验证不提供任何保护,因为客户端可以简单地手动伪造请求,或者从浏览器禁用javascript,或修改客户端javascript trhough类似于greasemonkey脚本。

用户可以关闭JavaScript,在这种情况下,验证例程将无法工作。 最好的做法是在前端和服务器上进行验证。

我从来没有在ASP上工作,但从我猜测ValidationServerControls是开箱即用的控件,它为您提供服务器端验证以及客户端验证。 (我可能错了)。 但据我所知,组件的服务器端验证始终是必需的; 因为在javascript中进行验证永远不够。 客户端可以随时禁用javascript并提交内容或使用curl等复杂工具向服务器发布可能包含数据的请求; 这可能会在你的代码/ sql中注入。

即使你写了javascript验证; 您必须以某种方式始终编写服务器代码来验证传入的数据。

理想的方法是同时使用1.验证javascript中的数据; 因此,在无效数据输入的情况下,对服务器的请求是有限的。 2.服务器端验证。 以防javascript被禁用并且数据发布到服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM