对于一个Web应用程序,同时在客户端和服务器端进行验证有什么高级别的原因吗?
对于一个Web应用程序,同时在客户端和服务器端进行验证有什么高级别的原因吗?
因为你的客户端验证可能会被破坏。
例如,在网络上,如果你使用JavaScript进行验证,很容易关闭JavaScript,或者使用诸如FireBug之类的工具更改它的工作方式。
即使使用其他客户端/服务器方法,数据链路也可能被破坏,并且“已验证”的数据在传输到服务器时可能会被更改(中间人攻击)。
总的来说,“永远不要相信客户端”这个原则是你需要始终在服务器端进行验证的原因。
你可能会问,在这种情况下,为什么还要在客户端进行验证?为了提供即时反馈。
用户可以在本地修改验证JavaScript(保存页面并对其进行任何操作),或者在浏览器中关闭JavaScript。因此,在这种情况下,客户端验证是无用的。因此,您还应该在服务器上进行验证。
理论上,客户端将会在到达服务器之前移除大部分验证问题(尽管当 JavaScript 被禁用/编辑时并不总是如此)。这将通过将责任放在客户端设备上执行验证来消除服务器上的任何“负担”/不必要的处理。
如果由于某种原因客户端未能捕获验证问题,服务器端将会捕获它们。