验证服务器控件在任何方面都比javascript好吗?

验证服务器控件在任何方面都比javascript好吗?,javascript,asp.net,validation-controls,Javascript,Asp.net,Validation Controls,验证服务器控件在任何方面都比javascript好吗?他们是否限制我们,因为我们只能使用他们提供的功能。请帮我做这个。我在自己的博客上读到了有关验证服务器控件的内容最好在客户端和服务器上使用验证: 在客户机上进行验证可提供即时反馈,而无需不断往返服务器。这有助于获得更好的用户体验 需要在服务器上进行验证,以确保不会获得错误数据。毕竟,恶意用户可以很容易地将数据发布到服务器,而无需通过客户端验证 现在,关于如何实现验证,如果内置的“toolkit”控件为您执行适当的验证,那么显然要比编写自己的

验证服务器控件在任何方面都比javascript好吗?他们是否限制我们,因为我们只能使用他们提供的功能。请帮我做这个。我在自己的博客上读到了有关验证服务器控件的内容

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

  • 在客户机上进行验证可提供即时反馈,而无需不断往返服务器。这有助于获得更好的用户体验
  • 需要在服务器上进行验证,以确保不会获得错误数据。毕竟,恶意用户可以很容易地将数据发布到服务器,而无需通过客户端验证
现在,关于如何实现验证,如果内置的“toolkit”控件为您执行适当的验证,那么显然要比编写自己的验证代码简单。ASP.NET验证程序为您执行客户端和服务器端验证。从:

验证控件始终进行验证 上的关联输入控件 服务器。验证控制也有 完整的客户端实现 允许启用脚本的浏览器 (例如Microsoft Internet Explorer) 版本4.0及更高版本)来执行 在客户端上进行验证。客户端 验证增强了验证 通过检查用户输入进行处理 它被发送到服务器。这允许 要在客户端上检测的错误 在提交表格之前,避免 信息的往返 服务器端验证所必需的


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

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

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

理想的方法是两者兼备 1.验证javascript中的数据;这样,在数据输入无效的情况下,对服务器的请求将受到限制。
2.服务器端验证。如果禁用javascript并向服务器发送数据。

通常,您应该始终执行服务器端数据校验。这可以确保您保护服务器不受恶意伪造请求的影响,防止数据存储输入无效数据(只要数据库本身不负责)。如果您喜欢使用工具或框架进行服务器端输入验证,如您链接的文章中所述,这取决于您

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

因此,这不是一个非此即彼的问题,更多的是和。你实际上没有在这里做任何双重工作。客户端和服务器端验证只是为了不同的目的(分别增强用户的可用性和保护服务的逻辑和安全性)

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


如果您仍然觉得自己在做双重工作,那么选择进行服务器端验证。(当然,您仍然可以使用此功能通知客户端,但这需要响应。)客户端验证不提供任何保护,因为客户端只需手动伪造请求,或通过浏览器禁用javascript,或者使用类似greasemonkey脚本的内容修改客户端javascript。

Ok,我们应该同时进行服务器端和客户端验证。但我们决定使用验证控件还是只使用javascript的方式不同。我想到的一点是与不同浏览器的兼容性…以及它们的更新和可维护性。我想没有人给出这个问题的确切答案!!!在和我在微软的朋友聊天后,我得到了以下好的观点。出现的一个问题是,如果我们在.js文件中使用javascript,我们可以在整个应用程序中重用它,另一方面,如果我们使用验证控件并为它们提供一些特定的设置,并且这些设置将在整个应用程序中使用,那么我们必须在每个页面中反复写入这些设置。。。仍然在努力寻找一个完美的答案…我想说没有完美的答案。如果内置的验证控件可以满足您的需要,并且对您来说,实现成本比直接的性能更重要,那么我认为没有任何理由不使用它们。如果使用内置控件无法满足您的需求,那么很明显,您将不得不自行开发。