HTML5密码框type=”password”本身未变,演进的是约束机制、自动填充和移动端适配:autocomplete需用语义化值(如new-password),pattern/minlength仅为前端提示,后端校验不可省略,inputmode=”text”才可调出全键盘。
HTML5密码框的type=”password”本身没变,变的是配套控制逻辑
“新旧版本”不是指HTML5和HTML4之间对type="password"的定义差异——这个属性从HTML2就存在。真正演进的是围绕它的**约束机制、自动填充行为、移动端适配能力**。HTML4里只能靠JS手动隐藏+校验;HTML5把autocomplete、pattern、inputmode等变成原生支持,浏览器开始主动干预交互流程。
autocomplete=”off”已失效,必须用语义化值替代
老写法autocomplete="off"在Chrome 86+、Edge 90+中基本被忽略,浏览器仍会弹出密码管理器建议。这不是bug,是安全策略升级后的结果。
- 新建密码页:用
autocomplete="new-password",明确告诉浏览器“这是全新密码,别复用旧记录” - 登录页的“当前密码”字段:用
autocomplete="current-password",便于密码管理器精准填充 - 绝对不要写
autocomplete="false"——浏览器根本不识别这个值
pattern和minlength只是前端提示,后端校验不可省略
pattern和minlength在提交时触发浏览器原生校验,但它们完全可被绕过:禁用JS、直接发POST请求、用curl改参数……这些都让前端约束形同虚设。