我公司的网站上有一个竞赛报名页面。为了参加比赛,您需要创建一个登录名,该登录名只是一封电子邮件和一个 4 位数的密码。这是 PIN 字段:
<input type="password" name="contest_pin" id="contest_pin" maxlength="4" />
当用户提交表单时,该帐户会在我们的数据库中创建,然后他们会收到一封包含他们创建的电子邮件地址和 PIN 的电子邮件(我已复制到该电子邮件)。
这是问题所在:在我测试过的每个浏览器(Mac 上的 Safari/Chrome/Firefox、Linux 上的 Chrome/Firefox、Windows 上的 IE7/8/9)中,我无法在该 PIN 字段中输入超过 4 位数字。然而,我收到的几封电子邮件显示,用户创建了一个超过 4 个字符的 pin。
这怎么可能?是否有不支持 maxlength 的浏览器?我没有在 Opera 或任何移动浏览器上测试过。如果他们的密码长于 4 位数字,这不是什么大不了的事;数据库将接受更多。我只是想知道他们是如何设法绕过 maxlength 的。
编辑添加
有太多的答案基本上说了同样的话,我无法单独回复所有这些。我知道我应该始终对任何重要的事情进行服务器端验证,并且我们确实有 PHP 代码来清理我们的数据,如果它非常重要,我也会让 PHP 代码强制执行 4 位限制。它们只有 4 个字符对我们来说并不重要,所以我没有强制执行。我只是想知道为什么 maxlength 属性没有做它的设计,这是防止用户输入超过一定数量的字符。对于那些建议使用恶意脚本或 Firebug 的人,我可以 100% 确定情况并非如此。只有我们网站的注册用户(仅限于非常具体的企业会员列表)才能进入竞赛条目页面,