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

前端如何解决浏览器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.kler.cn/a/374051.html

相关文章:

  • 文心一言 VS 讯飞星火 VS chatgpt (381)-- 算法导论24.5 1题
  • ubuntu交叉编译zlib库给arm平台使用
  • 【MySQL】深入理解隔离性
  • Java阶段三02
  • ASPICE 4.0引领自动驾驶未来:机器学习模型的特点与实践
  • 如何从CSV、JSON等格式创建DataFrame
  • 配置DDNS结合光猫路由器实现外网映射
  • Docker 60个常用命令汇总
  • springboot 修复 Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38819)
  • 丢失有一段时间时的数据可以找回吗?可以!
  • Rust 知识的 20 道练习题和详细解答
  • 【JVM】——GC垃圾回收机制(图解通俗易懂)
  • nginx 路径匹配,关于“/“对规则的影响
  • 多厂商的实现不同vlan间通信
  • LLM速览篇【241-270】
  • 高效网络自动化:Python在网络基础中的应用
  • [论文精读]LoRA: Low-Rank Adaptation of Large Language Models
  • 【初阶数据结构与算法】新的旅程之时间复杂度和空间复杂度
  • 学Linux的第五天
  • 如何在被 DDoS 攻击时更换 IP 地址
  • Vue项目中动态路由与权限控制:router.beforeEach的使用及无token重定向登录页
  • Linux上python离线安装教程
  • 常见问题 | 数字签名如何保障电子商务交易安全?
  • 【代码随想录Day60】图论Part11
  • Linux 文件系统权限
  • Spring Boot 中的过滤器 (Filter) 使用方案