图片验证码

作用

当一个操作,涉及到用户隐私安全,或者代价比较高的时候。需要考虑到结合图片验证码。

比如登录接口,如果没有图片验证码。

那么,可能会被恶意用户暴力破解,造成服务器压力较大,或者用户安全隐患。

实现方式

安全性的基础

安全的基础,是因为图片识别的成本较高。

而生成图片的难度不算太高。

但是这一切都有一个很大的假设,那就是图片识别的成本较高,机器无法暴力破解。

不过随着机器学习的技术日新月异,图片识别能力越来越强,并不能保证图片无法被识别。

提升门槛

我们可以给图片添加噪点,扭曲,干扰线,动态等等。

这样提升了安全性,同时也带来了另外一个问题。用户在输入的时候,验证码经常也输入不对。

所以,这里一定要有一个平衡。

让人眼基本便于识别,同时让机器不那么容易识别。

识别图片验证

很多公司都会选择图片识别作为认证。

比如 steam/12306 让点击属于某个物体的图片。

优点

相对来说比较安全。

缺点

为了避免被机器破解,图片一般比较模糊。

而且要点及多次,比较麻烦。

个人不是很喜欢。

滑块验证

滑块验证

把图片滑倒缺口处。

比如 qq 登录,就会经常用到滑块验证。

并且会统计对应的操作时间。

优点

这个是个人比较喜欢的验证方式。

操作简单。

拓展进阶

操作时间其实可以进一步过滤,因为用户操作会有一个统计信息。

我们取正态分布中的 90% 的中间范围,如果不在范围内,则认为是机器操作,直接过滤掉。

鼠标点击

比起滑块,还有一种验证方式。

那就是让用户自己点击一下页面按钮。

原理

应该是记录鼠标轨迹之类的,可能需要机器学习,或者规则验证是否为人类所为。

优点

操作比滑块还要方便。

缺点

这种破解起来过于简单。

简单的按键精灵之类的,就可以脚本破解。

小结

每一家公司都有保护用户隐私安全的义务,只可惜现实中很多用户的隐私安全依然无法保证。

对于一个国家,需要推行相应的法律合规。

对于一家公司,需要架构,安全部门,产研测的共同努力。

对于一位用户,我们也要有保护自己信息安全的意识。

希望本文对你有所帮助,如果喜欢,欢迎点赞收藏转发一波。

我是老马,期待与你的下次重逢。

参考资料