是否有不支持maxlength的浏览器?

Emm*_*myS 20 html webforms maxlength

我在我公司的网站上有一个竞赛入口页面.为了参加比赛,您创建一个登录名,这只是一封电子邮件和一个4位数的图钉.这是PIN字段:

<input type="password" name="contest_pin" id="contest_pin" maxlength="4" />
Run Code Online (Sandbox Code Playgroud)

当用户提交表单时,帐户将在我们的数据库中创建,然后他们会收到一封电子邮件(我已复制),其中包含他们创建的电子邮件地址和PIN.

问题在于:在我测试过的每个浏览器中(Mac上的Safari/Chrome/Firefox,Linux上的Chrome/Firefox,Windows上的IE7/8/9)我都不能在该PIN字段中输入4位以上的数字.然而,我收到的几封电子邮件显示用户创建了一个超过4个字符的引脚.

这怎么可能?是否有不支持maxlength的浏览器?我没有在Opera或任何移动浏览器上测试过.如果它们的引脚长度超过4位,那就没什么大不了的了.数据库将接受更多.我只是想知道他们是如何设法绕过maxlength的.

编辑添加

有太多的答案基本上对我说同样的事情来对所有人做出回应.我知道我应该总是对任何重要的事情进行服务器端验证,并且我们确实有PHP代码清理我们的数据,如果它非常重要,我也会有PHP代码强制执行4位数的限制.对我们而言,它们只有4个字符并不重要,所以我没有强制执行它.我只是想知道为什么maxlength属性没有按照它的设计去做,这会阻止用户输入超过一定数量的字符.对于那些提出恶意脚本或Firebug的人,我可以100%肯定不是这种情况.只有我们网站的注册用户(仅限于一个非常具体的企业会员名单)甚至可以进入比赛入口页面,我可以保证该名单上的大约100人中没有一个会故意试图规避输入类型属性.

Wel*_*bog 16

他们很可能是机器人读取字段名称并基于这些创建GET和POST请求,而不是像普通人类用户那样使用HTML表单.

这就是为什么客户端表单验证永远不足以确保数据正确的原因.客户端验证很好,因为它对最终用户有响应,但它无法防止坏数据到达您服务器的门口.

举个例子,假设我的表单中有一个输入字段,其行为是GET.我的输入字段的maxlength是4.当我按下提交时,我看到以#结尾的URL ?field=1234.没有什么能阻止我更新该URL ?field=123456789并按Enter键.使用POST操作可以完成类似的操作,但需要一个工具来完成它.

  • 还使用像firebug这样的工具,我可以编辑网站的html来删除maxlength. (7认同)
  • 不仅是机器人,我相信在较旧的浏览器中,可以粘贴较长的文本以绕过maxlength属性. (3认同)

Rio*_*ams 7

我相信每个浏览器都支持它,这里有一些链接供参考:

最大长度| SitePointReference

最大长度| W3学校

显然有办法解决这个问题 - 你应该确保你总是有足够的服务器端验证,因为客户端通常不够自己.

  • 请注意:w3schools通常被认为是编程/ Web开发相关信息的次要资源.在其他地方验证这些信息总是一个好主意. (11认同)