当前位置: 首页 > news >正文

前端如何解决浏览器input输入框密码自动填充的问题

        要解决HTML中<input>标签的密码输入框自动填充问题,你可以采取多种方法,但需要注意的是,由于浏览器的实现差异,这些方法可能并不总是有效。以下是一些常见的策略:然而,一些现代浏览器可能会忽略这个属性,特别是当它们认为用户安全受到威胁时(例如,在登录表单中)。

  1. 为输入框添加随机名称
    浏览器通常根据表单字段的名称来填充信息。通过为密码输入框添加一个随机或唯一的名称,你可以尝试绕过浏览器的自动填充机制:

    <input type="password" autocomplete="off" name="password" id="password">
    <input type="password" name="password_<random_string>" id="password"><input type="password" autocomplete="new-password" name="password" id="password">
    <input type="password" name="password_<random_string>" id="password">

    注意,这种方法可能需要服务器端逻辑的配合来正确处理这些随机名称。

  2. 兼容性笔记好的解决方案
     vue3中:

    /*初始化时, input输入框type类型为 text*/
    const repasswordType = ref('text')
    const passwordType = ref('text')onMounted(() => {repasswordType.value = 'text'passwordType.value = 'text'
    })/*输入框聚焦时, 讲input输入框type类型为 password*/const useRules = reactive({userName: [{ required: true, message: '请输入姓名', trigger: ['blur', 'input'] }],orgName: [{ required: true, message: '请输入机构名称', trigger: ['blur', 'input'] }],password: [{required: true,trigger: ['blur', 'input'],validator: () => {passwordType.value = 'password'if (!useForm.password.trim()) {return new Error('请输入密码')}if (!validPassword(useForm.password)) {return new Error('包含8-20个字符,至少包含数字,字母,常用字符两种元素')}// 检查是否与用户名相同if (useForm.password === useForm.phoneNumber) {return new Error('密码不能与手机号相同,请重新输入')}return true},},],repassword: [{required: true,trigger: ['blur', 'input'],validator: () => {repasswordType.value = 'password'if (useForm.password !== useForm.repassword) {return new Error('两次输入密码不一致,请重新输入')}return true},},],phoneNumber: [{required: true,trigger: ['blur', 'input'],validator: () => {if (!useForm.phoneNumber.trim()) {return new Error('请输入手机号码')}if (!validPhoneNumber(useForm.phoneNumber)) {return new Error('手机号码格式不正确,请重新输入')}// if (phoneNumberExist.value) {//   return new Error('该手机号已经注册,请直接登录')// }},},],verificationCode: [{ required: true, message: '请输入验证码', trigger: ['blur', 'input'] }],
    })
  3. 考虑安全性和可用性
    在尝试解决自动填充问题时,始终要权衡安全性和可用性。禁用自动填充可能会提高安全性(例如,防止跨站请求伪造攻击),但也可能降低用户体验(例如,需要用户手动输入更多信息)。

请记住,没有一种方法可以保证在所有情况下都有效,因为浏览器的自动填充行为是由它们的实现和用户的设置决定的。因此,建议测试你的解决方案以确保它在目标浏览器和环境中按预期工作。


http://www.mrgr.cn/news/62841.html

相关文章:

  • 计算机毕业设计源码 | 基于SpringBoot的线上教学系统 答疑辅导网站(附源码)
  • 状态模式(State Pattern)
  • 近似线性可分支持向量机的原理推导
  • lego-loam mapOptmization 源码注释(一)
  • 基于BLE的商业综合体室内定位导航系统的设计与实现
  • 【C/C++】结构体的定义
  • 【C/C++】字符/字符串函数(1)——由string.h提供
  • DBeaver如何插入一行新数据或者复制一行新数据,真方便
  • selenium无头浏览器截图并以邮件发送
  • 【设计模式】如何用C++实现依赖倒置
  • AcWing 1069 凸多边形的划分 区间dp + 高精度
  • 普通人的核心竞争力
  • Vim的配置
  • 杭州E类人才认定流程
  • C++设计模式结构型模式———桥接模式
  • 排序
  • 第十五章数据管理成熟度评估
  • 新160个crackme - 088-[KFC]fish‘s CrackMe
  • Telegram bot教程:通过BotFather设置Telegram bot的命令菜单
  • Java Executor ScheduledThreadPoolExecutor 总结
  • DBeaver如何查看ER图
  • Python定义与调用函数
  • 【AI时代】普通程序员想投身AI大模型行业,该如何快速入局
  • DAY67WEB 攻防-Java 安全JNDIRMILDAP五大不安全组件RCE 执行不出网
  • 服务器宝塔安装哪吒监控
  • 数据结构(8.5_1)——归并排序