用Javascript/Ajax而不是PHP验证表单的防故障方法



好的,所以目前我用PHP处理所有HTML表单提交。我将表格提交到一个PHP文件中,该文件为:

  • 检查页面加载时创建的cookie以防止CSRF
  • 包含一个处理验证的require_oce()
  • 运行其他逻辑

如果这些步骤中的任何一个失败,用户将在PHP中重定向到他们来自的页面,并显示错误消息。

我如何提交表格:

<form method="post" action="filename.php">

该系统是故障安全的;如果出现任何问题,即使禁用了Javascript,用户也会返回到他们原来的页面。

所以我的问题是;我可以只使用Ajax(表单提交时向服务器发出Ajax请求)创建一个故障安全系统吗?这样我就根本不需要这个PHP系统了?有推荐的程序/教程吗?

到目前为止,我已经避免了这种情况,因为拥有一个PHP表单处理系统作为潜在黑客的故障保险,以及Ajax,每个表单可能需要几个小时的开销

为了澄清,我不需要对禁用Javascript的用户提供支持。我只是想确保我的系统在这种情况下是安全的。我到处看了看,但事实证明很难找到澄清。

大部分情况下的简短答案是:没有。

将任何客户端视为可靠或故障安全的东西都是不明智的,尤其是在验证用户输入时。经验法则是:永远不要信任用户

目前,根据描述,您的表单正在提交到验证表单数据的PHP脚本。这种方式将是您最好的防线,因为您可以对正在处理的数据进行大量控制。

听起来你想删掉表单提交,而不是强制加载另一个页面。您可以使用AJAX将表单信息传递给脚本进行验证,但您的PHP代码对验证过程仍然至关重要。

基本上,你想让你的PHP验证坚实。接下来,开始添加一些AJAX调用,这些调用将表单中的信息传递给PHP代码,但如果AJAX不可用,请准备返回到标准表单提交。如果AJAX没有问题,您仍然可以提交数据,让PHP进行处理,然后返回一个指示成功或失败的有效负载。不过,请记住,在这种情况下,AJAX只是用于验证的一些糖。您只需重新加载页面并再次传输整个文档,就可以使交易更加甜蜜。

但请记住:它是不可靠的,也不是故障安全的。服务器端验证是隧道尽头的曙光。

最新更新