如果表单仅通过JavaScript提交,则需要进行PHP验证


Need for PHP validation if a form only submits via JavaScript?

如果我有一个表单,比如一个简单的带有姓名、电子邮件、消息等输入的联系我表单。在所有输入的JavaScript验证返回true后,我将使用Ajax提交该表单。

我还需要使用PHP验证输入吗?如果JavaScript被关闭,表单怎么还能提交?如果表单因为JavaScript关闭而无法提交,那怎么会造成伤害呢?

当然需要服务器端验证!:-)

它总是需要的

只需安装此加载项:https://addons.mozilla.org/en-US/firefox/addon/tamper-data/.

它允许您自由修改进入服务器的内容。

此外,Firebug允许您修改浏览器看到的内容,从而提交给服务器。

这里有一个类比:银行的保险箱上有锁。但他们也有安全摄像头和报警系统,以防锁无法阻止某人偷窃。

编辑:

如果你使用的是联系人表单(脚本会自动向联系人发送电子邮件),请记住,有人只需在电子邮件字段中添加地址,就可以让你的脚本发送1000条垃圾邮件。

为了避免这种情况,您需要进行服务器端验证。您根本不能依赖客户端验证。

最好在服务器端进行验证,因为最终用户可以做的不仅仅是打开/关闭JavaScript。

由于JavaScript在客户端可用,恶意用户可以更改客户端验证,以使恶意输入通过客户端验证。

信任经过服务器端验证的输入总比信任用户不改变JavaScript行为要好。

无论是否存在前端验证,都应该始终使用后端验证来净化用户输入。

虽然您认为禁用Javascript后无法提交表单是正确的,但仍有可能是恶意人员通过向您使用的URL发送POST请求来提交表单。

我认为最好每次都有两种验证类型:客户端(使用JavaScript,因此不会对浏览器进行Ajax调用)和服务器端(使用PHP验证)。

该表格仍然可以使用Firebug控制台或其他类型的黑客提交。

普通用户不能这样做,但是。。。还如果有机会的话,你不应该冒险。

任何人都可以向您的URL提交带有任何数据的表单。甚至从本地主机

因此,服务器端验证是必须的