Javascript表单验证的缺点
Javascript form validation downside
我正在构建一个学校项目,它是一个网站,我有一个表单,我使用javascript作为验证。如果用户关闭了javascript,他们是否有可能提交空表单?或者我最好使用php作为验证?
客户端
您希望首先在客户端验证输入,因为您可以向普通用户提供更好的反馈。例如,如果他们输入了无效的电子邮件地址并移动到下一个字段,则可以立即显示错误消息。这样,用户可以在提交表单之前更正每个字段
如果你只在服务器上验证,他们必须提交表单,收到错误消息,并试图找出问题所在。
(这种痛苦可以通过制作"粘性"表单来缓解,服务器可以记住在每个字段中输入的内容并重新填写,但客户端验证仍然更快。)
服务器端
您希望在服务器端进行验证,因为您可以保护恶意用户,他们可以轻松绕过您的JavaScript并向服务器提交危险的输入。
信任用户界面是非常危险的。他们不仅可以滥用你的用户界面,而且可能根本不使用你的用户接口,甚至不使用浏览器。如果用户手动编辑URL,或者运行自己的Javascript,或者使用其他工具调整HTTP请求,该怎么办?例如,如果他们从curl发送自定义HTTP请求,该怎么办?
不允许这样做不仅从安全角度来看是幼稚的,而且也是非标准的:应该允许客户端通过他们希望的任何方式发送HTTP,并且您应该正确响应。这包括验证。
更多参考
任何前端验证都只是为了获得更好的用户体验,您只能信任具有敏感逻辑的后端。
基本上,任何数据都可以从前端到达,您应该始终假设您的用户是恶意的("所有输入都是邪恶的"),并在后端进行验证。
Javascript验证根本不安全,人们可以关闭他们的Javascript或编辑您的代码。任何想绕过你的验证的人都会很容易做到这一点。PhP验证是更好的选择。因为用户不能只是关闭你的PhP或更改它。
如果你想让验证看起来很花哨,你可以做的就是设置前端和后端验证。
您可以使用html5标记,它们非常容易使用。喜欢你可以使用:
PATTERN attribute to define the regular expressions,
required for required fields and many others.
我必须说,所有基于html的验证都可以通过firebug等工具进行修复。如果您想使其真正健壮,您可能还需要在服务器端应用验证。我建议你选择一些MVC框架,比如
YII or may be code igniter
它们非常易于使用,并且具有非常强大的特殊脚手架功能。
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- jQuery自定义验证比较多个输入的序列
- 使用html中的外部javascript进行数据验证
- 如何使用jquery Validation验证Formspread
- jquery中的文本框验证
- 在验证和发送邮件后更改联系人表单的 html
- 代码不会验证
- JS验证ajax返回的html中的表单数据
- 同步调用,直到用户通过angular验证为访问者
- 带有加号的电话号码验证(可选)
- 解析javascript表单验证器
- 两位数的月份日期验证
- 使用angularjs验证文本框中的电子邮件
- 验证Javascript中的Textarea
- 使用regex的jquery keydown绑定不会验证撇号和句点
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 正在删除node.js中已验证的网站
- 自定义表单验证和提交
- Javascript表单验证的缺点