gpt4 book ai didi

javascript - Angular js - 表单和输入 - ajax 与客户端验证

转载 作者:行者123 更新时间:2023-12-02 18:46:50 25 4
gpt4 key购买 nike

我想知道为什么我必须在客户端验证表单,而它们无论如何都需要服务器端(ajax)验证以免被黑客攻击?

同时拥有客户端和服务器端(ajax)表单验证有什么好处吗?

我的意思是他们做同样的事情,但 ajax 需要 300 毫秒,而客户端可能需要 0 毫秒,这是进行重复验证的一个很好的理由吗? :P

另外,使用单个服务器端验证可以从客户端删除不需要的 js,我只看到只有 ajax 验证的好处,你呢?

如果我要进行客户端验证,是否可以遵循某种方法/实践/逻辑来避免在服务器端重复验证?就像仅当客户端验证正常时服务器才会执行操作/请求?

其实我的逻辑是:

服务器端+客户端验证更少的请求 -> 更多的代码(重复) -> 更多的麻烦 -> 更好的用户体验服务器端验证(仅限ajax)更多请求 -> 更少代码 -> 更少麻烦 -> 可能相同的用户体验!?

抱歉,英语 asd :D

最佳答案

您应该将客户端和服务器端验证视为单独的工具来实现单独的目标。

您绝对应该在服务器端进行验证的原因是,绝对没有什么可以阻止我手动编辑 Javascript 文件以删除任何客户端验证。即使您的代码被缩小和混淆(两者都可以取消),您根本无法阻止这种情况。

客户端验证之所以很好(但不如服务器端验证那么必要)是因为它实际上帮助用户创建将继续通过服务器端验证的表单。 AngularJS 可以在每次按键后轻松验证表单。从用户的 Angular 来看,这非常棒。想想所有那些密码字段旁边有一个“密码强度”仪表的表单,表明强度需要“良好”或更好才能通过验证。如果您在每次按键后执行 ajax 验证调用,您的服务器负载将会增加几个数量级。

这个想法是服务器端验证仅在用户点击“提交”按钮后才会发生。当用户甚至考虑点击“提交”按钮时,他们应该已经知道他们的表单将通过验证。

但是,让我们开始讨论您真正的问题:您只想输入一次验证规则。太棒了!现在你在想DRY!唯一的问题是,这需要在后端使用某些东西来自动生成客户端验证,这可能很困难。 另一种方法是让您的前端调用服务器,询问规则,并教您的前端如何解释响应。这将是一个额外的调用,但它应该是一个相对便宜的调用。不幸的是,这是相当多的额外工作。如果您预计您的表单在不久的将来会频繁更改,那么这可能是值得的。在这种情况下,能够在一个地方而不是两个地方进行更改将是一个巨大的好处,并且可能值得预先花费额外的时间。

那么,客户端验证是否绝对需要?嗯,这要看情况。客户可能非常挑剔,因此,如果这是一个真正为您带来收入的表格(银行账户申请表),那么您需要意识到,如果某些客户单击“提交”并看到他们的信息,他们可能会关闭您的网页。表格到处都是红色。如果他们在问题发生时就被告知,而不是一次性告诉他们,这是一种更好的体验。

但是,如果您要在截止日期前创建 Intranet 应用程序,那么您可能需要查看优先级并做出判断;)

关于javascript - Angular js - 表单和输入 - ajax 与客户端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21457938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com