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

时间:2012-07-23 08:46:55

标签: php javascript ajax

如果我有一个表单,请说一个简单的联系我表单,其中包含姓名,电子邮件,消息等的输入。我将表单设置为使用Ajax 提交后,JavaScript验证返回true在所有输入上。

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

5 个答案:

答案 0 :(得分:4)

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

总是需要它。

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

它允许您自由修改发送到服务器的内容。

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

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

修改

如果您使用联系表单(并且脚本会自动通过电子邮件发送给联系人),请记住,有人可以通过在电子邮件字段中添加地址来让您的脚本发送1000条垃圾邮件。

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

答案 1 :(得分:2)

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

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

普通用户不能这样做但是......仍然。如果有可能做到这一点,你就不应冒风险。

答案 2 :(得分:2)

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

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

最好信任服务器端验证的输入,而不是信任用户不改变JavaScript行为。

答案 3 :(得分:2)

无论是否存在前端验证,您都应始终使用后端验证来清理用户输入。

虽然你说错了,但是在Javascript被禁用的情况下无法提交表单,但只有向您使用的URL发送POST请求时,恶意用户仍然可以提交该表单。

答案 4 :(得分:1)

任何人都可以使用任何数据向您的网址提交表单。甚至来自localhost

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