验证服务器控件是否比javascript更好?它们是否限制我们,因为我们只能使用它们提供的功能。请帮帮我。我在自己的博客上阅读了有关验证服务器控件的信息
答案 0 :(得分:8)
最好在客户端和服务器上使用验证:
现在,关于如何实现验证 - 如果内置的“工具包”控件为您执行适当的验证,那显然比编写自己的验证代码更简单。 ASP.NET验证器为您执行客户端和服务器端验证。来自docs for BaseValidator
:
验证控件始终有效 关联的输入控件 服务器。验证控件也有 完整的客户端实现 允许启用脚本的浏览器 (例如Microsoft Internet Explorer 执行版本4.0及更高版本 验证客户端。客户端 验证增强了验证 通过检查用户输入之前的过程 它被发送到服务器。这允许 在客户端上检测到的错误 在提交表单之前,避免 往返信息 服务器端验证所必需的。
答案 1 :(得分:5)
通常,您始终应该执行服务器端数据操作。这可以确保您保护服务器免受恶意伪造的请求,数据存储区可以输入无效数据(只要数据库不自行处理)。如果您希望使用工具或框架进行服务器端输入验证,如您链接的文章中所述,则由您决定。
客户端验证(例如javascript)也很有用,但出于不同的原因:它允许您在提交数据之前向用户提供有用的信息。
所以这不是/或更多的和/和。你实际上并没有在这里做任何双重工作。客户端和服务器端验证只是为了不同的目的(分别增强了用户的可用性,保护了服务的逻辑和安全性)。
服务器和客户端验证可能由相同的业务逻辑管理(例如,对于邮政编码,您可以使用相同的正则表达式来检查和拒绝服务器端和客户端的输入)。在这种情况下,您需要同步两个验证层(可以通过从与服务器端服务代码相同的业务逻辑模型生成页面+ javascript逻辑来完成)。
如果您仍然认为自己正在进行双重工作,那么请选择进行服务器端验证。 (您当然可以使用它来通知客户端,但它会做出响应。)客户端验证不提供任何保护,因为客户端可以简单地手动伪造请求,或者从浏览器禁用javascript,或修改客户端javascript trhough类似于greasemonkey脚本。
答案 2 :(得分:0)
用户可以关闭JavaScript,在这种情况下,您的验证例程将无法工作。最好在前端和服务器上进行验证。
答案 3 :(得分:0)
我从来没有在ASP上工作,但是我猜测ValidationServerControls是开箱即用的控件,可以为您提供服务器端验证以及客户端验证。 (我可能错了)。 但据我所知,组件的服务器端验证始终是必需的;因为在javascript中进行验证永远不够。客户端可以随时禁用javascript并提交内容或使用curl等复杂工具向服务器发布可能包含数据的请求;可以在你的代码/ sql中注入。
即使你写了javascript验证;您必须以某种方式始终编写服务器代码来验证传入数据。
理想的方法是同时拥有两者 1.在javascript中验证数据;因此,在无效数据输入的情况下,对服务器的请求是有限的。 2.服务器端验证。以防javascript被禁用并且数据发布到服务器。