我已经做了一个联系表:
<form action="mailto:myemail@me.com" method="post" enctype="plain/text">
<label for="name">Name:</label> <input type="text" name="name" />
<label for="email">Email:</label> <input type="text" name="email" />
<br clear="all" />
<input type="submit" value="Compose" />
</form>
我想创建一个 javascript 表单验证器,而不必使用像 PHP 这样的服务器端语言。有什么想法吗?
最佳答案
这是一个坏主意。可以通过多种方式绕过 JavaScript 和 JavaScript 验证。
- 用户可以告诉浏览器不要执行页面上的任何 JavaScript。如果表单本身不依赖 JavaScript,表单仍会显示,操作页面仍会存在,但所有验证都已消失。
- 用户可以编辑 DOM。 Chrome、Firefox 和 IE 中的网页开发人员工具使更改表单属性变得轻而易举。这包括从表单中删除
onsubmit
等属性。或者,用户可以简单地从网页使用的资源中完全删除 JavaScript 函数。这允许用户避免通过验证。 - 用户可以将
POST
或GET
数据直接发送到操作 URL,而无需通过您的页面。这对攻击者来说非常有用,因为他们甚至可以在不通过浏览器的情况下将格式错误的表单注入(inject)您的服务器——他们可以改用终端,这要方便得多。
总而言之,不要这样做。允许用户控制验证是一件坏事。用户可以关闭客户端 JavaScript,但不能关闭PHP 服务器端 验证。如果您不想遭受令人尴尬的跨站点脚本攻击和其他漏洞,请使用 PHP 验证。
如果您正在寻找一个 PHP 表单验证库,您可以在 Internet 上找到许多这样的库。例如,我个人为 one such library 做出了贡献它可以很好地评估 POST
或 GET
类型表单中的字段。我为 self 宣传道歉,为了安全起见,我必须坚持你做服务器端验证。
这并不是说客户端验证很糟糕并且永远不应该使用。但它应该始终由服务器端验证进行备份。您应该将客户端验证视为一种无需重新加载即可通知用户其表单输入存在问题的方式,但始终使用服务器端验证来实际查看输入是否存在问题。
关于javascript - 如何使用 JavaScript 验证联系表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752859/