纯前端的滑块验证有什么意义?

现在登录很多都有滑块验证,但是发现,很多组件是纯前端的,不需要和服务端交互,那这个有啥意义呢?除了增加人登录麻烦,程序刷接口不是还是防不了吗,这不是为了做而做吗?

阅读 10.3k
9 个回答

从技术角度和安全策略来看的话,确实毫无意义 —— 不会给你的网站安全性上带来任何提升,并且只会影响正常用户的使用体验、而对爬虫没有影响。

但如果从应付甲方、糊弄老板、提升自己的工作产出 KPI 等方面考虑,则意义非凡(划掉)

P.S. 大部分开源组件都是 JSer 自己写的,仅仅只是为了演示个 UI 效果而已,并不是为了让你拿来直接放到项目里用的。


【回答补充】

一个暴论:任何在此问题下回答“仍有一定防爬虫意义”的人,都是没有任何在实际项目中对抗过爬虫的经验的。当然了,这种人其实挺“可爱”的,正是我原回答里提到的那种你可以随便就糊弄过去的“甲方/老板”们 —— 躺着收钱的活儿谁不爱干呢 😂


来自某回答:
image.png


回到源初的问题,为什么门要装门锁。我觉得可能有以下的几个原因:

  1. 防止别人随意进出。
  2. 防止小偷进来偷东西。

第二个问题是一个用纸糊的门锁能不能解决上面的问题?答案是当然不能。

但是我们要看和什么对比,如果和什么都没有的状态对比,我相信还是好了一些。比如你是一个 thief,你在踩点的时候考虑是否能进入房间,一般是从房门开始的,如果看到一个看起来难度比较高的门锁,可能你连打开工具箱的想法都没有了。

另外就算是一个真正的门锁其实也不能完全防止被撬。这些策略都是有成本和取舍的。

(手动滑稽)

可以防止一些基本的自动化脚本,用户基数大的话可以减轻服务器负担,减少没意义的请求

个人觉得有一定意义的,虽然说它不需要与服务端进行交互。而且对于防止程序刷接口的攻击可能效果有限,但是,对于防止机器人自动化攻击和账号暴力破解仍然是有一定效果的。
以思否社区为例,这段时间经常看到有人在反馈,吐槽思否社区访问时候会有验证操作,比如说这样
52714b47091268018c1b54a7fdd98aa.png

我们都知道,纯前端的滑块验证主要通过模拟用户行为来判断是否为真实用户,拖动滑块、点击按钮等操作。虽然这些操作可以被脚本模拟,但是相对于直接发送请求的自动化攻击,使用滑块验证会增加攻击者的复杂度和成本,因为攻击者需要编写更复杂的脚本来完成这些操作。所以在复杂度门槛上增加了一些,当然对于用户心理其实也有一定提升。
总体来说,意义不大,但并不是完全没有。

都是放在短信验证码的,防止盗刷的,省钱啊!被刷过就知道错了

回到源初的问题,为什么登陆模块要有滑块验证。我觉得可能有以下的几个原因:

  1. 防止暴力破解密码
  2. 防止短信获取功能被用去作为短信轰炸机的源头

第二个问题是纯前端验证能不能防止上面的问题?答案是当然不能。

但是我们要看和什么对比,如果和完全没有验证的状态(也就是现在)对比,我相信还是好了一些。比如你是一个 hacker,你在查看这个网站的时候考虑是否能利用这个接口,一般是从 UI 开始的,如果看到一个看起来难度比较高的验证码系统,可能你连打开 debugger 的想法都没有了。

另外就算是一个完整的验证功能其实也不能防止破解。这些策略都是有成本和取舍的。

还是有意义的,不仅是应付甲方,实现交互。其根本还是能解决一些自动化的模拟操作,如node可以通过调用浏览器虚拟器来实现模拟操作,如果没有验证滑块,则是个人都能去刷你一下^_^

新手上路,请多包涵

你要是用爬虫爬饿了么,饿了么会给你出验证(惩罚),如果前端验证不通过,后端会一直返回空(或要求验证的标识)

新手上路,请多包涵

答案就是没有意义,为了做而做。

实际上现在基本上没有纯前端的滑块验证码了,有的很小一部分就是设计和开发人员为了完成任务做的,有一部分是别人的练习项目,被人直接抄过来用了。

现在做滑块验证,基本是对接第三方,在滑块和点击验证的时候,捕捉用户的鼠标和键盘行为,然后将数据行为请求第三方分析校验人机,再将结果返回前端显示。
这种验证码都不用自己做了,每年缴纳一定的费用,只需要简单前后端集成下就可以了。

而且当把这种带鼠标键盘分析的校验拿出来说也没有多少意义,一定要后端接口也要做校验,前后端一起做,才能最大限度的加强系统安全,增加黑客入侵成本。

防止盗刷 还是有一定意义的

推荐问题
logo
极客观点
子站问答
访问
宣传栏