1

我的问题很简单,我正在使用 HTML、PHP 和 jQuery 为我的网站编写一个简单的登录/注册表单。

当我可以在每个输入上使用 HTML-s required 标记并使用 PHP 检查用户名可用性和密码匹配时,是否还需要在 PHP 中编写表单验证?

我相信在后端也进行验证是一种很好的做法,但似乎 HTML 中的“必需”功能可以解决所有这些问题?这很容易被滥用吗,仅依靠 HTML 进行简单的表单验证的一般缺点是什么?

4

4 回答 4

3

是否也需要在 PHP 中编写表单验证

您永远不能依赖任何形式的客户端验证。它总是可以被绕过的。

人们可能正在使用不支持 HTML 5 验证属性的浏览器,或者可能使用 DOM 检查器来删除它们。

通过关闭 JavaScript 可以轻松绕过 JavaScript 解决方案。

表单可以被复制/粘贴、编辑,然后从用户拥有的页面提交。

HTTP 请求可以手动构建而无需靠近表单。

等等等等

客户端验证只能为方便用户而提供。您的系统的保护只能在服务器端处理。

于 2013-04-21T16:28:31.230 回答
2

你永远不应该依赖前端验证。也不是 Javascript 或 HTML。用户可以打开您的注册表单,使用 firebug 或其他工具,检查文本框并删除required属性。也可以发送到您的后端 POSTed 变量,即使不打开您的前端

于 2013-04-21T16:28:39.223 回答
2

服务器上的验证是必须的

但是,您可以通过在客户端和服务器上进行验证来美化事情,以便用户获得即时反馈,但是是的,在 PHP 中进行验证是必要的。

于 2013-04-21T16:29:03.140 回答
1

将客户端验证视为可用性问题而将服务器端验证视为安全问题可能会有所帮助。

在可用性可能被描述为“很高兴拥有”的地方,安全性绝对是“必须拥有的”。

于 2013-04-21T16:57:06.870 回答