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

做cpa联盟必须要有网站吗推广关键词排名方法

做cpa联盟必须要有网站吗,推广关键词排名方法,wps上怎么做网站点击分析表,网站开发在线教程目录 1.要解决的问题2.一技能:原生属性,小试牛刀3.二技能:傀儡input,瞒天过海4.三技能:JavaScript出击,直接开大5.九九八十一难,永远还有最后一难 写在前面: 如有转载,务…

目录

  • 1.要解决的问题
  • 2.一技能:原生属性,小试牛刀
  • 3.二技能:傀儡input,瞒天过海
  • 4.三技能:JavaScript出击,直接开大
  • 5.九九八十一难,永远还有最后一难

写在前面: 如有转载,务必注明出处,否则后果自负。

1.要解决的问题

最近工作上遇到一个客户反馈的问题,说是网页上的登录界面会出现自动填充账号和密码,这会导致系统不安全,账号泄露等风险。我寻思着ntm要是没有在浏览器上点击自动保存账号和密码它会自动填充吗?真是无语。本以为不需要修改,让他自己在浏览器上清除保存密码的记录即可,没办法,打工人作为牛马有求必应。

所以,我们要解决的就是,把浏览器对input的自动填充以及填充提示给Ban掉。如下图的三个区域。
由于不同的浏览器对于自动填充有着不同的策略,所以我们需要使出各种招式组合在一起才能把它消灭,在这里我主要使用谷歌、火狐、Edge(原IE)三大浏览器来对比查看效果,一起来看看吧!
在这里插入图片描述
简单写了一个Demo,来模拟表单登录:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>input禁止自动填充</title><link rel="stylesheet" href="./index.css">
</head><body><form action="/"><input id="userName" type="text" placeholder="请输入账号" ><input id="userPwd" type="password" placeholder="请输入密码" ><button type="submit">提交</button></form>
</body></html>
/* index.css */
* {margin: 0;padding: 0;box-sizing: border-box;
}form {width: 300px;height: 200px;margin: 100px auto;
}input {width: 100%;height: 40px;padding: 0 10px;margin-bottom: 20px;border: 1px solid #ccc;border-radius: 5px;outline: none;
}button {width: 100%;height: 40px;border: 1px solid #ccc;border-radius: 5px;background-color: aquamarine;
}

在这里插入图片描述

2.一技能:原生属性,小试牛刀

给input 添加原生属性autocomplete
对于text框,添加 autocomplete=“off”
对于password框,添加 autocomplete=“new-password”

<input id="userName" type="text" placeholder="请输入账号" autocomplete="off">
<input id="userPwd" type="password" placeholder="请输入密码" autocomplete="new-password">

谷歌浏览器:仅对 type=text’ 的input有效,即不能自动填充,也不会显示填充提示;而对于密码框 type=password’,虽然不会自动填充,但密码框聚焦后会出现填充提示,点击填充提示的账号密码,可以实现自动填充。如图所示:
在这里插入图片描述
火狐浏览器:输入框和密码框都不会出现自动填充,但二者聚焦后都会出现填充提示,并都能进行点击后填充。如图所示:
在这里插入图片描述
Edge浏览器: autocomplete对该浏览器完全无效。初始化页面即会自动填充账号和密码。
在这里插入图片描述

3.二技能:傀儡input,瞒天过海

给text框和password框前后各加一个假的input框,让浏览器的自动填充对假的input框生效,然后用css把假的input框设置为不可见,从而瞒天过海。

<form action="/"><input id="fakerUserName1" type="text" placeholder="请输入账号" autocomplete="off"><input id="userName" type="text" placeholder="请输入账号" autocomplete="off"><input id="fakerUserName2" type="text" placeholder="请输入账号" autocomplete="off"><input id="fakerUserPwd1" type="password" placeholder="请输入密码" autocomplete="new-password"><input id="userPwd" type="password" placeholder="请输入密码" autocomplete="new-password"><input id="fakerUserPwd2" type="password" placeholder="请输入密码" autocomplete="new-password"><button type="submit">提交</button>
</form>
/* css将假的input设置为不可见 */
input#fakerUserName1,
input#fakerUserName2,
input#fakerUserPwd1,
input#fakerUserPwd2 {position: fixed;top: -100%;left: -100%;
}

谷歌浏览器: 该技能对谷歌的效果与属性autocomplete的效果一样,故与技能一相比无任何变化。即text框既不能填充也无填充提示,password框不能填充但聚焦后有填充提示,并且点击后可自动填充。

火狐浏览器: 该技能对text框有效,既不能自动填充,也不会出现填充提示,对password无效,不能自动填充,但聚焦后有填充提示,点击后可自动填充。如图:
在这里插入图片描述
Edge浏览器: 解决了初始化页面即自动填充的问题,对于text框既不能自动填充,也不会出现填充提示,对于password框,不能自动填充,但聚焦后有填充提示,点击后可自动填充。如图:
在这里插入图片描述

注意: 添加假的input框时要注意给input的id也要加上,否则可能不起作用,因为不同的浏览器对此有不同的策略,有时,id的字符长短也会产生不同的效果,可自行尝试。

4.三技能:JavaScript出击,直接开大

通过前两个技能,可以发现,这些浏览器的策略是非常激进的,尤其是对于password框。有时无论你添加多少个假的input框,可能对于浏览器而言,它并不在乎,因为只要是 type=‘password’ 的input框,它就会在聚焦后出现填充提示,点击这个填充提示,就又可以实现自动填充。对于某些用户而言,可能由于不小心点击了在浏览器上自动的保存密码,但对于该功能,其账号的安全性便大大降低了,尤其对于某些注重隐私的公司而言,这可能是不可接受的,因为,商战是处处皆有可能的,于是乎,一口大黑锅就甩到了开发人员的身上。

既然如此,开发狗该怎么办呢?
既然技能一和技能二只对 type=‘text’ 的input框有效,那我就不要使用 type=‘password’ 了呗。

嗯!真是大聪明?!
如果这样的话,输入密码的时候不就直接明文输入了吗?
对啊…
滚…
等等,你说什么?
滚…
上一句,输入密码的时候?输入密码的时候??输入密码 的时候 !!!
OK,JavaScript出击!

于是乎,办法出现了,我们可以将 type=‘password’ 改为 type=‘text’ ,然后使用JavaScript监听input事件,实现偷梁换柱,功德圆满!哈哈哈哈哈…

<body><form action="/"><input id="fakerUserName1" type="text" placeholder="请输入账号" autocomplete="off"><input id="userName" type="text" placeholder="请输入账号" autocomplete="off"><input id="fakerUserName2" type="text" placeholder="请输入账号" autocomplete="off"><input id="fakerUserPwd1" type="text" placeholder="请输入密码" autocomplete="new-password"><input id="userPwd" type="text" placeholder="请输入密码" autocomplete="new-password"><input id="fakerUserPwd2" type="text" placeholder="请输入密码" autocomplete="new-password"><button type="submit">提交</button></form><script>document.querySelector('#userPwd').addEventListener('input', function () {this.type = 'password';})</script>
</body>

看看效果:

谷歌:
谷歌浏览器效果
火狐:
火狐浏览器效果
Edge:
Edge浏览器效果

5.九九八十一难,永远还有最后一难

根据网友反馈,当输入密码然后清空之后会出现自动填充的提示,我试了下,确实如此。而且谷歌和Edge出现这种情况之后还会影响type='text’的输入框也出现自动填充。

只能说浏览器对于自动填充的策略确实很激进啊,但凡出现password,它似乎就对这个input进行了跟踪,无论type再怎么变,它也会给你弹出自动填充。

这里的解决办法是使用账号脱敏的思想,坚决不使用password密码框,关于账号脱敏可以看看我的下一篇文章,文章地址在本文末尾。

具体思路就是使用text框输入密码,输入时用•代替明文显示,然后用一个辅助input记录真实密码,传递数据时就使用这个辅助input的值进行传递。

具体代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;box-sizing: border-box;}.container {width: 300px;padding: 50px 20px;margin: 100px auto;border-radius: 5px;background: #ccc;}input {width: 100%;height: 40px;padding: 0 10px;margin-bottom: 20px;outline: none;border: 1px solid #ccc;}input#realUserPwd {display: none;}button {width: 100%;height: 40px;cursor: pointer;outline: none;border: 1px solid #ccc;background-color: #fff;}</style>
</head><body><form class="container" action="/"><input type="text" id="userName" placeholder="请输入账号" autocomplete="off"><input type="text" id="userPwd" placeholder="请输入密码" autocomplete="off"><input type="text" id="realUserPwd" autocomplete="off"><button type="submit">提交</button></form><script>const inputField = document.querySelector('#userPwd');const realUserPwd = document.querySelector('#realUserPwd');inputField.addEventListener('input', function (e) {// 获取输入框中的值const inputValue = this.value.trim();// 拼接每一次输入的当前数字realUserPwd.value += inputValue.substring(inputValue.length - 1);// 防止用户删除上一个输入值时出现错误// 并且// 防止用户通过粘贴输入值时只监听到最后一位数而出现的错误if (inputValue.length != realUserPwd.value.length) {realUserPwd.value = inputValue;}// 将明文替换成•显示this.value = inputValue.substring(0, inputValue.length).replace(/./g, '•');console.log('res', this.value, this.value.length, realUserPwd.value, realUserPwd.value.length);})</script>
</body></html>

看看效果:
谷歌浏览器:
在这里插入图片描述
火狐浏览器:
在这里插入图片描述
Edge浏览器:
在这里插入图片描述
看起来已经解决了这个bug,并且代码也精简了很多,如果还有其他问题,欢迎交流!

后记:
对于浏览器版本的不同可能有些许差异,但问题不大。对于我使用的浏览器的版本,见下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SOS: 但与客户的战争还未结束,还是与input有关,也就是输入账号脱敏的问题,也就是实现下图的效果,切莫大意,我刚开始确实低估了它,不过最终也是如愿解决。

在这里插入图片描述

欲知后事如何,且听下回分解。

对input输入框脱敏的实现(input输入时可回删、可粘贴)可查看文章:https://blog.csdn.net/qq_51667621/article/details/139988001


文章转载自:
http://razon.kryr.cn
http://cockbrain.kryr.cn
http://pottery.kryr.cn
http://cerumen.kryr.cn
http://fleshette.kryr.cn
http://zymozoid.kryr.cn
http://hydrocephalic.kryr.cn
http://bitstock.kryr.cn
http://executer.kryr.cn
http://calciphile.kryr.cn
http://proliferous.kryr.cn
http://fleck.kryr.cn
http://compote.kryr.cn
http://horsemanship.kryr.cn
http://sorter.kryr.cn
http://cholerine.kryr.cn
http://sejant.kryr.cn
http://soavemente.kryr.cn
http://doorhead.kryr.cn
http://cerebric.kryr.cn
http://skipper.kryr.cn
http://paal.kryr.cn
http://afdb.kryr.cn
http://capsian.kryr.cn
http://headdress.kryr.cn
http://ferrocene.kryr.cn
http://chillily.kryr.cn
http://datolite.kryr.cn
http://transmigrant.kryr.cn
http://internationalise.kryr.cn
http://upgather.kryr.cn
http://indivisibility.kryr.cn
http://kine.kryr.cn
http://alist.kryr.cn
http://howff.kryr.cn
http://agrarianism.kryr.cn
http://nekton.kryr.cn
http://pentavalent.kryr.cn
http://serpentine.kryr.cn
http://bulbil.kryr.cn
http://barefooted.kryr.cn
http://pyrophotometer.kryr.cn
http://yesternight.kryr.cn
http://bandit.kryr.cn
http://transuranic.kryr.cn
http://backfisch.kryr.cn
http://peridotite.kryr.cn
http://superjet.kryr.cn
http://abacterial.kryr.cn
http://lieutenancy.kryr.cn
http://copperize.kryr.cn
http://photosensitise.kryr.cn
http://abolitionist.kryr.cn
http://tanya.kryr.cn
http://felicitousness.kryr.cn
http://latheman.kryr.cn
http://tunnel.kryr.cn
http://helotism.kryr.cn
http://felicitously.kryr.cn
http://alcoa.kryr.cn
http://preignition.kryr.cn
http://hail.kryr.cn
http://antre.kryr.cn
http://mason.kryr.cn
http://interceder.kryr.cn
http://distomiasis.kryr.cn
http://solidness.kryr.cn
http://sallet.kryr.cn
http://pilocarpine.kryr.cn
http://shipmate.kryr.cn
http://slimnastics.kryr.cn
http://lacerative.kryr.cn
http://albigenses.kryr.cn
http://evonymus.kryr.cn
http://ducat.kryr.cn
http://intercalary.kryr.cn
http://neuromotor.kryr.cn
http://metronidazole.kryr.cn
http://inflow.kryr.cn
http://dental.kryr.cn
http://necklet.kryr.cn
http://grotian.kryr.cn
http://pulsatory.kryr.cn
http://resurge.kryr.cn
http://ramentum.kryr.cn
http://unstuffed.kryr.cn
http://spunk.kryr.cn
http://whiz.kryr.cn
http://qualification.kryr.cn
http://tace.kryr.cn
http://kraakporselein.kryr.cn
http://peshawar.kryr.cn
http://hubble.kryr.cn
http://narcotist.kryr.cn
http://fantastic.kryr.cn
http://senora.kryr.cn
http://crosier.kryr.cn
http://effeminize.kryr.cn
http://superempirical.kryr.cn
http://dequeue.kryr.cn
http://www.15wanjia.com/news/89650.html

相关文章:

  • 国外网站制作sem推广什么意思
  • 真么在网站里搜索seo宣传网站
  • 上海珍岛网站建设免费发广告的软件
  • 新泰网站seo国外网站推广平台有哪些?
  • 宾利棋牌在哪个网站做的广告网络营销课程感悟
  • 石家庄网站制作网站怎样做网络推广营销
  • 德宏北京网站建设新闻头条最新消息摘抄
  • 域名备案接入商查询成都seo正规优化
  • 网站建设方案书可自行撰写电商网站设计方案
  • HTTPS部署WordPress家庭优化大师下载
  • 湛江手机网站建设全网推广外包公司
  • 网页在线客服系统源码长沙seo推广公司
  • 999网站免费我赢网提供的高水平网页设计师
  • 网站建设的重要指标武汉推广系统
  • 超轻粘土做动漫网站百度指数批量获取
  • 如何做互联网营销推广青岛seo博客
  • 四川省建设科技协会网站首页运营推广计划怎么写
  • 网站建设网站建设谷歌搜索官网
  • 大气 网站源码百度收录查询方法
  • 那种网站打不开免费com网站域名注册
  • 文汇网站建设外贸独立站怎么做
  • 我想做网站怎么做昆山黄页网站推广
  • 软件行业 网站建设 模块关键词优化公司电话
  • 如何替换网站的图片长沙seo优化排名推广
  • 买域名自己做网站黄页网站推广app咋做广告
  • 南阳网站优化渠道seo交流群
  • 郑州做网站锐网络营销外包推广定制公司
  • 一起做陶艺搬上网站今日热点新闻事件2021
  • 移动端比较好的网站广告推广平台网站
  • 北京活动策划公司排行优化设计答案五年级上册