首页 > 其他分享 >防止浏览器记住密码

防止浏览器记住密码

时间:2024-12-05 10:46:19浏览次数:3  
标签:文本 浏览器 text 密码 webkit security 0px 记住

一、问题引入

客户要求登录时,不能被浏览器截取记录密码

 

 二、问题分析

问题的根源就在于浏览器会捕捉你的password的输入记录,以最后一次为节点进行存储。所以不管我们对password做什么处理,只要是password进行了输入,都会被拦截。

三、解决方案

使用css属性-webkit-text-security模拟密码展示与隐藏

属性值如下:

none:文本不进行任何处理,显示原始文本。
disc:将文本替换为实心圆点(•)。
circle:将文本替换为空心圆圈(○)。
square:将文本替换为空心方块(□)。
disclosure-closed:将文本替换为实心三角形(▶)。
disclosure-open:将文本替换为倒三角形(▼)。

页面登录表单:

<el-form :model="ruleForm" :rules="rules" ref="ruleForm" class="login_form" @keyup.enter.native="submitForm('ruleForm')">
                    <el-form-item label="" prop="userName" style="margin-bottom: 28px">
                        <el-input placeholder="请输入账号" type="text" prefix-icon="el-icon-user" v-model="ruleForm.userName" @blur="checkUserHasFreeApi"
                            clearable>
                        </el-input>
                    </el-form-item>
                    <el-form-item label="" prop="password">
                        <el-input :class="showPassword?'':'pwd'" :disabled="Boolean(timeStr)" placeholder="请输入密码" type="text"
                            prefix-icon="el-icon-lock" v-model="ruleForm.password" clearable>
                        </el-input>
                        <i class="show_password" @click="showPassword = !showPassword"
                            :class="showPassword?'font_family icon-biyanjing':'font_family icon-yanjing1'"></i>
                    </el-form-item>
                </el-form>

css样式

.pwd {
                /deep/ .el-input__inner {
                    -webkit-text-security: disc !important;
                }
            }

四、兼容性

1.目前,-webkit-text-security 属性仅在基于 WebKit 引擎的浏览器中进行兼容,包括Google Chrome、Safari 等。然而,该属性在其他主流浏览器中并不被支持,如Mozilla Firefox、Microsoft Edge 等。因此,在使用 -webkit-text-security 属性时,应注意浏览器的兼容性问题。

2.为了解决兼容性问题,可以使用其他解决方案,如 JavaScript 或服务器端加密。JavaScript 可以用来在所有浏览器中实现文本掩盖效果。而服务器端加密可以在后端处理敏感信息的显示,从而降低前端 CSS 属性的依赖性。

<input type="password" id="password-input" />

<script>
  const passwordInput = document.getElementById('password-input');
  passwordInput.addEventListener('input', () => {
    passwordInput.value = '*'.repeat(passwordInput.value.length);
  });
</script>

3.参考库text-security,实现了-webkit-text-security的效果。

text-security是一个精巧的字体集合,仅由三种字符形状构成:圆盘、圆形和方形,类似于传统密码字段中的掩码符号。通过设定特定的字体家族(如font-family: "text-security-disc")。实测结果:placeholder也会被加密,其他表现与-webkit-text-security: disc一致。

五、记住密码样式

记住密码默认样式可修改

/deep/ input:-webkit-autofill {
                // -webkit-box-shadow: 0px 0px 0px 20px rgb(32, 85, 104) inset;
                -webkit-box-shadow: 0px 0px 0px transparent inset !important;
                // background: transparent !important;
                -webkit-text-fill-color: transparent !important;
            }

 

标签:文本,浏览器,text,密码,webkit,security,0px,记住
From: https://www.cnblogs.com/younghxp/p/18588003

相关文章

  • 在设置keyup监听事件后按F5刷新和按浏览器中刷新键刷新有什么区别?
    在前端开发中,使用keyup监听事件后,按F5刷新和点击浏览器刷新按钮,虽然最终结果都是刷新页面,但在某些情况下会有一些细微的差别:1.触发事件的时机:F5(或Ctrl+R/Cmd+R):直接触发浏览器的刷新机制,并不会触发keyup事件。因为keyup事件是在按键释放时触发的,而按下F5并不会释放,而是......
  • Geolocation.getCurrentPosition()用来做什么的?在什么浏览器不受兼容?
    geolocation.getCurrentPosition()是一个JavaScriptAPI,用于获取用户的当前地理位置。它属于GeolocationAPI的一部分,允许Web应用程序访问用户的地理位置信息,前提是用户授予了权限。该方法异步地尝试获取用户的地理位置。成功获取位置后,会调用一个回调函数,并将一个Positio......
  • 用js写一个方法检测浏览器是否支持css3的属性
    functionsupportsCSSProperty(propertyName){//Createadummyelementtotestthepropertyonletelement=document.createElement('div');//Checkifthepropertyexistsdirectlyonthestyleobjectif(propertyNameinelement.style)......
  • Python 浏览器自动化新利器:DrissionPage,让网页操作更简单!
    Python浏览器自动化新利器:DrissionPage,让网页操作更简单!文章目录Python浏览器自动化新利器:DrissionPage,让网页操作更简单!......
  • 苹果iPad锁屏密码忘记怎么办?4个小妙招帮助您轻松解锁
    苹果iPad是一款非常受欢迎的平板电脑,由于其出色的性能和稳定的系统,成为了很多人工作和娱乐的首选。然而,有时候我们会不小心忘记了iPad的锁屏密码,这给我们带来了很多困扰。不过,不用担心,本文将向大家介绍几种忘记iPad锁屏密码的解决方法,帮助重新获得对设备的访问权限。方法一、......
  • windows AD域控密码过期企业微信推送告警
    在写了windowsAD域控密码过期邮件推送告警后,有网友问我能不能写一篇关于企业微信推送的文章如果需要看邮件推送或者需要自定义脚本,可以参考我的文章windowsAD域控密码过期邮件通知迭代版本1.企业微信告警要求1.1.企业微信推送需要具备的条件需要在企业微信中创建企业微......
  • windows系统下 重置mysql数据库的密码
    停掉mysql服务win+x按a进入管理员cmd,输入netstopmysql(mysql是服务名,不清楚的可以在服务中查看)2.输入mysqld爆红进入mysql安装目录输入./mysqld--console--skip-grant-tables报错要加入数据目录地址,输入.\mysqld--console--datadir="D:\Deve......
  • nacos开启鉴权后,默认账号密码无法登录问题,解决方案
    Linux系统下,检查使用版本java-version,如果是openJDK1.8版本,那么可能存在openJDK本身缺少加密软件包。检查登录界面,控制台会出现,报错样式,如下图所示此时就可以判断,由于jdk版本的问题,导致默认账号密码无法登录。解决方法:升级JDK版本到openJDK17或改用oracleJDK1.8......
  • 利用Chrome浏览器使用Overrides调试线上代码,真是太方便啦! 转载
    利用Chrome开发者工具断点调试功能调试修改代码,一刷新就什么都没有了,且只能调试JS代码,太尴尬了。想刷新后,原来修改调试的的代码还在,且JSP、JS、CSS等能调试,那赶快试试下面这种方法吧。第一步:在浏览器开发者工具中打开下面的面板sources-->overrides!第二步:打开Selectfolde......
  • 能不能使用纯css使你的浏览器卡死?怎么实现?
    可以使用一些CSS技巧来使浏览器性能变差,甚至在某些情况下导致卡顿或崩溃,但这取决于用户的硬件和浏览器版本。纯粹依靠CSS让所有浏览器都崩溃是很难的,但制造明显的性能问题是可能的。以下是一些方法,以及它们生效的原因:1.嵌套选择器和复杂样式:原理:浏览器需要计算每个......