SSO登录增加人机验证
## 前言
一直以来,防止机器人消耗资源一直都是广大开发者所头疼的问题。
为了防止机器人占用资源,危害网站运行,我们一般会接入云服务商的Challenge或者自建。
为了低成本(实际上是零成本)运行我的网站,我一直是把Serverless架构的博客托管在EdgeOne上,但EdgeOne貌似并没有验证码功能
于是我就选择了利用边缘函数Serverless自建一个人机验证程序。
## 实践
我首先是想到了用~~Qedge~~(之前用的一个CDN服务商,后面因为操作麻烦就不用了)开启WAF代理EO边缘函数一个端点,这个端点触发后会生成一个UUID,储存在服务器,因为前面放了一层WAF人机验证,例如6位数字、无感、滑动,因此能触发生成UUID的就一定是通过了人机验证的。
但由于QEdge操作不便,加上最近要迁移,还不能一键导入配置(不知道又是那里偷来的系统),然后带宽国内线路低(多数时候不到1Mbps,bug多等太多原因),所以不用了,所以我只能自己解决验证码。
我首先就用了python的captcha库生成了5000个6位数字的图,用了各种OCR采样测试后确保安全。
然后把这些图片上传到EOPages上,然后在边缘函数设置了几个端点:
> 获取请求页面SPA
> 加载challenge图片
> 提交Challenge图片
> 后端验证Challenge Code
搭建完后测试,效果十分满意
评论 (0)