如果我有一个表单,比如说一个简单的联系我表单,其中包含姓名、电子邮件、消息等的输入。并且我将表单设置为在 JavaScript 验证对所有输入返回 true后使用 Ajax 提交。
我还需要使用 PHP 验证输入吗?如果 JavaScript 被关闭,表单如何仍然提交?如果由于 JavaScript 关闭而无法提交表单,那怎么会造成任何伤害呢?
如果我有一个表单,比如说一个简单的联系我表单,其中包含姓名、电子邮件、消息等的输入。并且我将表单设置为在 JavaScript 验证对所有输入返回 true后使用 Ajax 提交。
我还需要使用 PHP 验证输入吗?如果 JavaScript 被关闭,表单如何仍然提交?如果由于 JavaScript 关闭而无法提交表单,那怎么会造成任何伤害呢?
当然,您需要服务器端验证!:-)
它总是需要的。
只需安装此插件:https ://addons.mozilla.org/en-US/firefox/addon/tamper-data/ 。
它使您可以自由修改发送到服务器的内容。
此外,Firebug允许您修改浏览器看到的内容,从而提交给服务器。
这是一个类比:银行的保险箱上都有锁。但他们也有安全摄像头和警报系统,以防万一锁无法阻止某人偷窃。
编辑:
如果您使用的是联系表格(并且脚本会自动向联系人发送电子邮件),请记住有人可以让您的脚本发送 1000 条垃圾邮件,只需在电子邮件字段中添加地址即可。
为避免这种情况,您需要进行服务器端验证。您根本不能依赖客户端验证。
我认为最好每次都有两种验证类型:客户端(使用 JavaScript,因此不对浏览器进行 Ajax 调用)和服务器端(使用 PHP 验证)。
仍然可以使用 Firebug 控制台或其他类型的 hack 提交表单。
普通用户无法做到这一点,但......仍然。如果有机会可以做到,你不应该冒险。
最好在服务器端进行验证,因为最终用户可以做的不仅仅是打开/关闭 JavaScript。
由于 JavaScript 在客户端可用,恶意用户可以更改客户端验证以使恶意输入通过客户端验证。
信任经过服务器端验证的输入总是比信任用户不改变 JavaScript 行为要好。
无论是否存在前端验证,您都应该始终使用后端验证来清理用户输入。
虽然您是正确的,无法在禁用 Javascript 的情况下提交表单,但仍然可以通过简单地向您使用的 URL 发送 POST 请求来提交具有恶意意图的人。
任何人都可以使用任何数据向您的 URL 提交表单。即使来自本地主机
所以服务器端验证是必须的