2

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

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

4

5 回答 5

4

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

它总是需要的。

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

它使您可以自由修改发送到服务器的内容。

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

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

编辑:

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

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

于 2012-07-23T08:52:14.400 回答
2

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

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

普通用户无法做到这一点,但......仍然。如果有机会可以做到,你不应该冒险。

于 2012-07-23T08:51:23.070 回答
2

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

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

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

于 2012-07-23T08:51:38.530 回答
2

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

虽然您是正确的,无法在禁用 Javascript 的情况下提交表单,但仍然可以通过简单地向您使用的 URL 发送 POST 请求来提交具有恶意意图的人。

于 2012-07-23T08:52:34.120 回答
1

任何人都可以使用任何数据向您的 URL 提交表单。即使来自本地主机

所以服务器端验证是必须的

于 2012-07-23T09:04:01.720 回答