防刷子机制
主要分为两种场景:
- 针对未登录或者未注册用户,对于注册,各种验证码等类似的接口进行防刷机制,同时尽量减少对于用户的打扰。
- 针对已经登陆的用户:
- 参与活动设置必要的门槛:比如最近交易量。
- 引入 MFA 之后,限制用户只能通过绑定的 MFA 的设备参与活动。
针对 2 其实主要是从业务的角度考虑,MFA 机制不仅是安全性的保证,MFA 更是利于验证用户设备有效,从而可以使用设备做一些业务的限制。
针对 1,可以使用以下的机制减少验证码对于用户的打扰:
- 使用类似于 Google reCAPTCHA Enterprise(reCAPTCHA v3)或者国内可以用 hCAPTCHA Enterprise 服务,针对敏感接口,例如注册,短信 OTP 接口等等接入,每次请求会带上一个 Google Recaptcha Enterprise 的评分:
- reCAPTCHA v3 在用户浏览网站时连续地评估用户行为。这包括用户与页面的交互方式(如鼠标移动、滚动、点击等)、设备和浏览器的信息。它还可能分析用户在整个会话中的行为,包括访问多个页面的顺序和速度。
- 基于这些行为分析,reCAPTCHA v3 为每个用户请求分配一个分数,范围从 0.0 到 1.0。分数越接近 1.0 表示系统越认为该行为来自真实人类,分数越低则越可能是由自动化脚本或机器人产生。这里是一个分数分布的例子:
- 你的后台根据这个分数(笔者这里是针对所有低于 0.8 的请求),请求响应是需要验证码才能继续。这里的验证码实现方案就很多很多了,笔者就不赘述了。
- 也就是,对于大部分用户,注册的时候,其实连验证码都不需要输入。对于评分比较低的用户才去让用户接受挑战(challenge),或者是输入验证码,或者是其他挑战方式。
为何不建议使用 ip 设备封禁或者限流(限流并不是禁止访问,而是跳转或者弹出验证码)?相较于上面的手段,对于用户的打扰比较多。同时 ip 和设备比较容易伪造(ip 可以通过 vpn,设备可以模拟等等),并且,现在的浏览器的发展趋势是 user-agent 趋于统一,暴露的信息越来越少:
https://developers.google.com/privacy-sandbox/blog/user-agent-reduction-android-model-and-version?hl=zh-cn
个人简介:个人业余研究了 AI LLM 微调与 RAG,目前成果是微调了三个模型:
- 一个模型是基于 whisper 模型的微调,使用我原来做的精翻的视频按照语句段落切分的片段,并尝试按照方言类别,以及技术类别分别尝试微调的成果。用于视频字幕识别。
- 一个模型是基于 Mistral Large 的模型的微调,识别提取视频课件的片段,辅以实际的课件文字进行识别微调。用于识别课件的片段。
- 最后一个模型是基于 Claude 3 的模型微调,使用我之前制作的翻译字幕,与 AWS、Go 社区、CNCF 生态里面的官方英文文档以及中文文档作为语料,按照内容段交叉拆分,进行微调,用于字幕翻译