V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
godblessumilk
V2EX  ›  信息安全

大屌们,如何动态生成 http 的请求路径 ??为了防黒产刷网站接口(不想买验证码服务,穷

  •  
  •   godblessumilk · 2023-01-14 13:37:08 +08:00 via Android · 1785 次点击
    这是一个创建于 713 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,验证码服务让我太感动了,他不止抢钱(调用一次 api 就几块钱),抢用户好感度,还给我送个时不时会被黒产攻破的验证码

    由于没有检索到动态生成 http request url 的成熟方案,我目前想到的粗暴办法,是将整个网站用服务端渲染,服务端分发网站内容之前,用一个随机数算法,同一个接口,给每个用户生成不同的 request url 。

    类似于 piao 客 和皮条客为了 piao 女昌 交易不被发现,piao 客 想见 女支女,只能每次都由皮条客告诉 piao 客 去找 女支女 的路线怎么走。

    post body 带动态参数(比如 token )在我看来就像是数学题里的未知数 xyz ,如果 token 是一个参数,那加上 http request url 就是第二个参数,验证码就是第三个参数。

    在数学的代数学上,这些动态参数被称作“元”。

    学过初中数学都知道,二元一次方程会比一元一次方程计算困难,

    网站和黒客对抗的过程,就是比赛 出数学题、解数学题 的过程,只要网站的数学题出得够难(例:用牛逼的加密算法),黒客破解该数学题的成本大于收益,那黒客就不会闲的蛋疼来搞了

    注:本人是一名 web 开发,目前的常用技术栈为 Vue.js + python ( Flask 常用) + Nginx + docker + Linux ,所以希望大屌们能推荐一个开源的 python 包让我快速实现这个需求!!!!

    blankmiss
        1
    blankmiss  
       2023-01-14 14:43:25 +08:00
    那不有逆向你前端 js 的操作,不应该从限流接口来做处理吗,针对接口进行熔断或者降级
    rev1si0n
        2
    rev1si0n  
       2023-01-14 15:54:09 +08:00
    简单说一句:不可能的事情,总有办法可以刷你。
    godblessumilk
        3
    godblessumilk  
    OP
       2023-01-14 16:07:12 +08:00 via Android
    @rev1si0n 只要成本够高,收益够低,黒铲就盯不上我
    tomato96
        4
    tomato96  
       2023-01-14 17:32:19 +08:00
    post body 带动态参数(比如 token )在我看来就像是数学题里的未知数 xyz ,如果 token 是一个参数,那加上 http request url 就是第二个参数,验证码就是第三个参数。
    ——————————————————
    为什么非得用 URL 做第二个参数呢,body 或者 query 带上一个随机生成的、每个用户都不同的 code 标识不就行了?吗?
    enrolls
        5
    enrolls  
       2023-01-14 20:47:41 +08:00 via iPhone   ❤️ 1
    参照微信,url 加密,解决下一个地址问题; ip 限流解决速度问题。还有什么问题?
    join23
        6
    join23  
       2023-01-15 08:31:59 +08:00 via Android
    根本不是问题啊?私人站还是公司的?性质是易招黑客体质?有巨量机密?别意淫了,你想什么方法都可以,但是要以事实为依据,私人的,自己爱怎么设计都行,反正提高自己水平。公司的,你提出实际问题后由公司决策,担心钱,根本没有办法解决。没有大仇的,黑客不可能盯上你。
    IvanLi127
        7
    IvanLi127  
       2023-01-15 09:39:40 +08:00 via Android
    没必要,url 路径和查询参数与请求体一样,都是入参,加 token 效果是一样的。动态变化的 url 只能让他们找你接口麻烦一点点。。。多搞几次也能发现规律。。。要是他直接模拟点击,接口啥样都无所谓。。。所以建议在前面套低成本的人机验证,减少高成本人机验证被刷的风险
    Herry001
        8
    Herry001  
       2023-01-15 12:11:38 +08:00
    这玩意有啥用……你要不研究下 Selenium ?不用验证码这货基本横着走。
    公司项目找公司报销验证码,个人项目上 google recaptcha ,免费足够。
    godblessumilk
        9
    godblessumilk  
    OP
       2023-01-15 13:18:22 +08:00 via Android
    @Herry001 Selenium 搞群控脚本是吧,很刑噢
    godblessumilk
        10
    godblessumilk  
    OP
       2023-01-15 13:28:46 +08:00 via Android
    @IvanLi127 起码模拟真实用户操作这一步,黒客成本就已经上去了。

    这个问题的本质可以归纳为:如何区分 [真实用户] 还是 [机器用户] 。

    我目前想到有另一个办法: [真实用户] 是有作息时间的, [机器用户] 普遍没有作息时间,机器可以 24h 不睡觉。用这个特征也能拦下一部分。

    另外 [真实用户] 有现实世界的公民身份证,注册账号时强制实名认证,这里也能拦下一批 [机器用户]
    godblessumilk
        11
    godblessumilk  
    OP
       2023-01-15 13:30:27 +08:00 via Android
    @enrolls 黒产用群控脚本慢速请求,模拟真实用户,你怎么给 ip 限速?
    edis0n0
        12
    edis0n0  
       2023-01-23 12:27:37 +08:00
    你知道现在大学生劳动力有多便宜吗? 2captcha 之类给爬虫打验证码服务都不用 AI 用大学生了,官网介绍 All captchas are solved by workers, that's why 2captcha can bypass all humanly readable types of captchas. 你防的了机器我就上更便宜的真人
    xmrvabc2
        13
    xmrvabc2  
       2023-01-29 18:45:16 +08:00
    你不是转了安全岗位吗,又做回开发了,还是开发香哈
    enrolls
        14
    enrolls  
       2023-02-08 15:17:27 +08:00 via iPhone
    @godblessumilk 基于你的回复,反问你,你怎么知道 TA 不是真实用户?是一堆群控?

    真要干这点的话,复杂得很,基于你的业务来思考,不是黑哥的成本问题,是你的投产比问题。

    来点简单点解决:接入 cloudflare 使用 challenge ,manage challenge ;参考知乎简单的拦截是怎么做的?

    来点你都要怀疑要不要做的:click trap 针对 fuzz ;参考微博,小红书,淘宝,知乎是怎么做的(跟用户系统设计有关),我理解下,大厂都有一个共性,微博最显著。支付宝也有,也是用在判断上。
    godblessumilk
        15
    godblessumilk  
    OP
       2023-02-08 15:49:47 +08:00
    @xmrvabc2 现在在做安全开发,紧张又刺激,开发冷兵器呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2506 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:46 · PVG 12:46 · LAX 20:46 · JFK 23:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.