我想知道为什么我必须在客户端验证表单,而无论如何它们都需要服务器端(ajax
)验证才能不被黑客入侵?
同时进行客户端和服务器端(ajax)表单验证是否有任何好处?
我的意思是,他们做同样的事情,但是ajax花费300毫秒,而客户端花费0毫秒,这是进行重复验证的真正好理由吗?:P
另外,使用单服务器端验证可以从客户端删除不需要的js,我只看到仅具有ajax验证的好处,那您呢?
如果我要进行客户端验证,是否有一些方法/做法/逻辑可以遵循,以确保服务器端不重复验证?仅当客户端验证正常时,服务器才执行操作/请求?
其实我的逻辑是:
服务器+客户端验证更少的请求->更多的代码(重复的)->更多的麻烦->更好的UX服务器端的验证(仅ajax)更多的请求->更少的代码->麻烦更少->可能是相同的UX!
对不起,马其顿英语asd:D
您应该将客户端验证和服务器端验证视为一个单独的工具来实现单独的目标。
您绝对应该在服务器端进行验证的原因是,绝对没有什么可以阻止我手动编辑Javascript文件以删除任何客户端验证。即使您的代码经过精简和混淆(两者都可以撤消),您也无法阻止。
客户端验证很好(但没有服务器验证那么必要)的原因是,它实际上帮助用户创建了将继续通过服务器验证的表单。每次按键后,AngularJS都可以轻松地验证表单。从用户角度来看,这太棒了。考虑所有这些形式,在密码字段旁边有一个“ Password Strength”(密码强度)计量表,说该强度必须为“良好”或更高才能通过验证。如果每次按键后都要进行ajax验证调用,则会将服务器负载增加几个数量级。
这个想法是服务器端验证只会在用户点击“提交”按钮之后进行。当用户甚至考虑点击“提交”按钮时,他们应该已经知道自己的表单将通过验证。
但是,让我们来解决您的实际问题:您只想输入一次验证规则。太棒了!现在您正在考虑干!唯一的问题是,这将需要在后端使用某些东西来自动生成客户端验证,这可能很困难。另一种可能是让您的前端打电话给服务器,询问规则,并教您的前端如何解释响应。这将是一个额外的电话,但它应该是一个相对便宜的电话。不幸的是,这是很多额外的工作。如果您希望您的表格在不久的将来经常更改,那可能是值得的。在那种情况下,能够在一个地方而不是两个地方进行更改将是一个巨大的福音,并且可能值得花在前面的额外时间。
那么,客户端验证是否绝对必要?好吧,这取决于。客户可能非常挑剔,因此,如果这是一种可以为您带来实际收入的表格(银行帐户申请表格),那么您需要认识到,如果某些客户单击“提交”并查看其收入,则他们可能会关闭您的网页表格到处都是红色。如果将问题发生时告诉他们,而不是一次全部解决,那将是一个更好的体验。
但是,如果您要在截止日期之前创建Intranet应用程序,则可能需要查看优先级并做出判断;)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句