javascript - 如何使用 JavaScript 验证联系表单?

标签 javascript html validation

我已经做了一个联系表:

<form action="mailto:myemail@me.com" method="post" enctype="plain/text">
  <label for="name">Name:</label>&nbsp;<input type="text" name="name" />
  <label for="email">Email:</label>&nbsp;<input type="text" name="email" />
  <br clear="all" />
  <input type="submit" value="Compose" />
</form>

我想创建一个 javascript 表单验证器,而不必使用像 PHP 这样的服务器端语言。有什么想法吗?

最佳答案

这是一个坏主意。可以通过多种方式绕过 JavaScript 和 JavaScript 验证。

  1. 用户可以告诉浏览器不要执行页面上的任何 JavaScript。如果表单本身不依赖 JavaScript,表单仍会显示,操作页面仍会存在,但所有验证都已消失。
  2. 用户可以编辑 DOM。 Chrome、Firefox 和 IE 中的网页开发人员工具使更改表单属性变得轻而易举。这包括从表单中删除 onsubmit 等属性。或者,用户可以简单地从网页使用的资源中完全删除 JavaScript 函数。这允许用户避免通过验证。
  3. 用户可以将 POSTGET 数据直接发送到操作 URL,而无需通过您的页面。这对攻击者来说非常有用,因为他们甚至可以在不通过浏览器的情况下将格式错误的表单注入(inject)您的服务器——他们可以改用终端,这要方便得多。

总而言之,不要这样做。允许用户控制验证是一件坏事。用户可以关闭客户端 JavaScript,但不能关闭PHP 服务器端 验证。如果您不想遭受令人尴尬的跨站点脚本攻击和其他漏洞,请使用 PHP 验证。

如果您正在寻找一个 PHP 表单验证库,您可以在 Internet 上找到许多这样的库。例如,我个人为 one such library 做出了贡献它可以很好地评估 POSTGET 类型表单中的字段。我为 self 宣传道歉,为了安全起见,我必须坚持你做服务器端验证。

这并不是说客户端验证很糟糕并且永远不应该使用。但它应该始终由服务器端验证进行备份。您应该将客户端验证视为一种无需重新加载即可通知用户其表单输入存在问题的方式,但始终使用服务器端验证来实际查看输入是否存在问题。

关于javascript - 如何使用 JavaScript 验证联系表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752859/

相关文章:

javascript - 浏览器特定的 Jquery

jquery - HTML 数据的灯箱模拟

javascript - 如何在 Backbone 形式整数文本字段上定义最小/最大验证?

angularjs - 在 AngularJS 自定义验证指令中调用异步服务

Angular 2+ 自定义验证器 "required if"另一个字段已填写

javascript - 插入 JavaScript 文件时使用属性 'script language="javascript"' 的原因是什么?

javascript - 空输入类型文件在 IE 中不起作用

javascript - 使用 laravel 动态数据和灯箱

html - 规范中不允许在自定义元素中使用自关闭标签的原因是什么?

javascript - HTML 和 JavaScript 合作实验室