我的问题很简单,我正在使用HTML,PHP和jQuery为我的网站编写一个简单的登录/注册表单。
当我在每个输入上使用HTML-s必需标记并使用PHP检查用户名可用性和密码匹配时,是否还需要在PHP中编写表单验证?
我认为在后端进行验证是一种好习惯,但似乎HTML中的“必需”功能可以解决所有问题?这是否容易被误用,单纯依赖HTML进行简单的表单验证有哪些缺点?
答案 0 :(得分:3)
是否还需要在PHP中编写表单验证
您永远不能依赖依赖任何形式的客户端验证。它总是被绕过。
人们可能正在使用不支持HTML 5验证属性的浏览器,或者可能使用DOM检查器删除它们。
通过关闭JavaScript可以绕过JavaScript解决方案。
可以复制/粘贴,编辑表格,然后从用户拥有的页面提交表格。
可以手动构建HTTP请求,而无需靠近表单。
等。等
只能为方便用户提供客户端验证。您的系统的保护只能在服务器端处理。
答案 1 :(得分:2)
您永远不应该依赖前端验证。也不是Javascript或HTML。用户可以打开您的注册表单,使用firebug或其他工具,检查文本框并删除required
属性。即使没有打开你的前端,也可以发送到你的后端POST变量
答案 2 :(得分:2)
必须在服务器上进行验证
但是你可以通过在客户端和服务器上进行验证来获得很好的效果,这样用户就可以获得即时反馈,但是在PHP中进行验证是必要的。
答案 3 :(得分:1)
将客户端验证视为可用性问题并将服务器端验证视为安全问题可能会有所帮助。
如果可用性可能被描述为“很高兴”,那么安全肯定是“必须拥有”。