如果我有一个表单,请说一个简单的联系我表单,其中包含姓名,电子邮件,消息等的输入。我将表单设置为使用Ajax 提交后,JavaScript验证返回true在所有输入上。
我还需要使用PHP验证输入吗?如果JavaScript被关闭,表单怎么还能提交?如果由于JavaScript关闭而无法提交表单,那怎么会造成任何伤害?
答案 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
因此服务器端验证是必须的