Javascript表单验证的缺点

Javascript form validation downside

本文关键字:缺点 验证 表单 Javascript      更新时间:2023-09-26

我正在构建一个学校项目,它是一个网站,我有一个表单,我使用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 

它们非常易于使用,并且具有非常强大的特殊脚手架功能。