最近在搭建项目的登录界面,有一个验证码模块,like this
搜了一些教程是在前端实现的,就在我准备比着写的时候,看到一条留言“这样的验证码只能防人,不能防机器”。
所以,我就转向学习验证码的原理以及前后端验证码的区别了。以此文简单记录:
1.验证码的作用
验证码是防机器的,防止恶意破解密码、刷票、论坛灌水、刷页。有效的防止某个黑客以特定程序暴力破解的方式进行不断的登录尝试。
一种常用的CAPTCHA测试是让用户输入一个扭曲变形的图片上所显示的文字或数字,扭曲变形是为了避免被光学字符识别(OCR, Optical Character Recognition)之类的电脑程序自动辨识出图片上的文数字而失去效果。由于这个测试是由计算机来考人类,而不是标准图灵测试中那样由人类来考计算机,人们有时称CAPTCHA是一种反向图灵测试。
2.前端验证码
前端验证码是由前端浏览器生成的验证码,填完验证码后,先检查验证码正确与否,如果正确则向后端发送请求,调用后端接口。
但是验证码放在前端,安全性不高:比如某网站的验证码放在了前端
对应代码: