好的,所以目前我用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只是用于验证的一些糖。您只需重新加载页面并再次传输整个文档,就可以使交易更加甜蜜。
但请记住:它是不可靠的,也不是故障安全的。服务器端验证是隧道尽头的曙光。