同时使用这两种验证的目的是什么?因为如果javascript验证成功,在服务器上验证表单输入是额外的负担。我们不能使用标志并根据javascript验证是否成功来设置或取消设置其值?如果设置了标志值,我们将跳过php验证。这不可能吗?如果不可能,你能解释一下有效的现实生活中的例子吗?或者用户是否可以修改标志的值,即使我们在标头中传递它?
等待一些合乎逻辑的答案。
谢谢。
答案 0 :(得分:7)
使用JavaScript进行验证可以节省您的服务器之旅,并创建良好的响应式用户体验。
使用PHP进行验证是必要的,这样您就不会破坏数据,或者更糟糕(用户可以通过多种方式禁用JavaScript或将数据发布到PHP应用程序中)。
答案 1 :(得分:4)
用户可以禁用JavaScript。它也可以被操纵,因为它是客户端。
要记住一件事,永远不要相信用户输入。即使您信任这些用户,或者该网站仅限于您所熟知的非常小的用户。
所以始终保持服务器端验证。
客户端验证是为了实用性,所以我建议你也保留它。
答案 2 :(得分:4)
目的很简单就是安全。
Javascript验证正在客户端进行 - 在用户浏览器中。例如,使用像firebug这样的工具禁用或编辑我喜欢的验证没有问题,或者通过在我的浏览器中禁用javascript来禁用它。
另一方面,PHP验证是在服务器端完成的,用户不能干扰它。
总结一下,以及我如何考虑它 - Javascript验证是为了方便客户端使用,PHP是为了实际安全。
答案 3 :(得分:1)
您永远不会信任用户输入。 JavaScript是一种用于改善用户体验的实用程序,而不是防御恶意用户行为的第一道防线。 JavaScript本身可用于绕过所有JavaScript验证;所有人都必须在控制台中输入以下命令:
document.forms[0].submit();
现在我不确定使用标志的想法是什么。但是,如果他/她可以进行JavaScript验证,那么手动“设置”标志也很容易。
如果你认为服务器端验证会给服务器带来负担,那么你就是无知(或者懒惰)。
答案 4 :(得分:0)
客户端验证主要用于用户体验和基本验证。
在编写服务器端代码时,您应该编写验证以确保安全性并确保请求不会被篡改。
答案 5 :(得分:0)
您可能知道,浏览器允许用户禁用javascript。在这种情况下,将不会执行客户端验证代码。如果没有服务器端验证,这将在您的应用程序中产生不一致。
例如,如果有一个输入文本字段,您的应用程序需要integer
值并且用户输入non-integer
值,那么您的应用程序必然行为不端,如果您使用的是数据库,它会抛出一些错误
答案 6 :(得分:0)
为了强调其他答案可能暗示的一点:不仅可以在浏览器中绕过JavaScript,而且如果攻击者分析发送到的请求,则可以在不访问您的网站的情况下将数据发送到您的服务器并从您的网站。
这可以通过操纵GET / POST请求的工具(甚至使用有效的会话)或构建自己的请求的工具来完成。
JavaScript验证是为了帮助您的常规用户输入格式良好的数据,服务器端验证可以保护您的服务器/您的数据完整性