V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tmtstudio
V2EX  ›  程序员

大佬们,如何防止 api 被别人恶意调用,目前使用了混淆+wasm+rsa&aes 都防不住

  •  
  •   tmtstudio · 15 天前 · 3075 次点击

    太难缠了,目测是把 wasm 直接拿去加解密了

    23 条回复    2024-09-04 19:32:39 +08:00
    tmtstudio
        1
    tmtstudio  
    OP
       15 天前
    我接口参数和反参都这样了,真是没辙了
    param: CBvPwEcAyHmnRQ2VRJ+cTbrPfJothei4nkMFlvqGMZl/xduTNg9VVhWUyF/CrMCnld8OeZZpHaSxp/k4YH/DZvTTge4aCmK7sxR8qPoP+ZHjDaakoC3MiIhkzWbBWwPx4JbKCtc3E/8AMD52IU6bZjBM29zrfS2pawTmSHR+oUY9Jnlucv1mMOC1+/1BWwuSLFQ4bkyPoRsrflJUD9SfQzascADp9bvDAJ/Eh8fvVgT4FSkzqtyQVemopDrG9ntt
    code: H2l0TqAcrx+DIc0CW4eGWPSPZRrUHvlWaOaOXjpGQ3Tn79gh6PcwFW3J5KaZUcjOAMpbEgWS5D9i/wtqcNdI6iz0hX0Vmz62wVuxVJUa3ltXOMJk2RMvtoYOVb8Ne+IuSOOr3tMeB4JxmiRB4MNwdUnIXtHWc6z0OxVZ6FuPzrQ=

    {"status":1,"info":"\u6210\u529f","data":{"data":"VdAbKxb927LEtIEP6Hgd8820rE2EruZLa0WstR7lWZixMhmYE6TECFTlrci3pSVfeWz1voe7jkb1dAqDdU0mdzS95P+LzgOxImhuh6Dv3vKY8eHRLqgy+K1QsfcaqKxnaMFuVkTgZzJySlhTBZAhAbkqWuBMoaXv8Z6zGan\/pghVc7US2Z2wTiXfPRe4dWxLa3nWH2gIyIDwGj8Wxhxx9DFbxmSQoh6ZFjUz1v12+2LNaoN972OzlOU159e6QmX\/jKP4SVZB3vKi6EdeQynGKwZtuAVN3Am1q\/ayIZp1pbn8B+5PuK09OOTwElCPiAw3fn09l6CzlirCwpV5VJLEU96Cu7pYRLVrIOe5WEhgRbfExqZ+JOqd5Q+OuN6NosUqKW1ZlDHbu3Ha09gu9CyLbw56GcMQA60FCvUNInw4WCbxlOhcASO\/Ye73i1S07ZbeuyGvd3SZMxMd5+H8x95KduEp+IsRCh3DHOz94ORXtA4ivNPgoWuCjhgvHtq6whxBAMnm4Jf\/6MY24mrd9\/0BWQ==","code":"Z2SLbR+9Vz8noEFVL\/eD+XFccTgTJo6Rv53dPiNE0rSweOvoG9+fxZUdMW0dlF63Bche7cAaGPbko1WHel1s8eEBmjTPB1CHCNAep8mHD1wO2\/k\/FpPNhh2gVhKEvZqIqDhVjsT2lNk704RoKBXNsnf4zlxC1O8HoE5wmF45e\/8="}}
    zmaplex
        2
    zmaplex  
       15 天前
    服务端限流 + recaptcha 认证
    jsonparse
        3
    jsonparse  
       15 天前
    防重放+限流
    tool2dx
        4
    tool2dx  
       15 天前
    加参数签名算法,把签名算法放到服务器 RPC 上来计算,按照一定的调用比例,识别恶意客户端 ID 。

    算法不放在本地,这总没办法了吧。
    RoyLaw
        5
    RoyLaw  
       15 天前
    限制访问 IP
    Ayanokouji
        6
    Ayanokouji  
       15 天前
    上个 apisix 之类的网关,挑一些插件开启
    LeeReamond
        7
    LeeReamond  
       15 天前
    不太了解灰产解 wasm 怎么个说法,我感觉 wasm 解 AST 还挺麻烦的,但是也许你硬编码了什么字符串密钥或者接口之类的很好搞出来。

    @tool2dx http 无状态,灰产搞客户端那不是要开多少开多少,每次都是新 ID 。。。
    fruitmonster
        8
    fruitmonster  
       15 天前   ❤️ 5
    coderxy
        9
    coderxy  
       15 天前
    有的是改内存的, 你再怎么加密它正常用你的客户端去请求你也防不了。
    zhenjiachen
        10
    zhenjiachen  
       15 天前 via iPhone
    wasm 不需要反编译,直接使用运行时就可以跑起来了,然后把参数放到接口里面调用就行了
    povsister
        11
    povsister  
       15 天前
    专业风控团队都是风险因子收集+模式识别,靠行为模式来打击黑产。

    你用的这些方案都只能提高门槛,对于黑产本身来说不算啥。你当下最简单的方式就是,接口调用完之后保留一些供后续审计的数据,做不到在线实时识别的话事后打击也可以。
    tmtstudio
        12
    tmtstudio  
    OP
       15 天前
    @fruitmonster #8 妙啊,这可以用在 wasm 里鉴权
    tmtstudio
        13
    tmtstudio  
    OP
       15 天前
    @povsister #11 我这项目还吸引不到黑产,就是一些技术小鬼,现在有了 gpt 谁都能搞一下
    hsuehly
        14
    hsuehly  
       15 天前
    我研究过一点,可以交流一下
    proxytoworld
        15
    proxytoworld  
       15 天前
    核心是你即使在 wasm 加解密你还是得在 js 端使用 wasm export 出的 abi ,其实目前 wasm 反编译不是很成熟,大概率是把你 js 反混淆了

    建议防重放+签名算法,配合服务端限流+环境检查之类的
    Lockeysama
        16
    Lockeysama  
       15 天前
    关键字:WAF 、Bot Management
    iorilu
        17
    iorilu  
       15 天前
    说明你的站很牛啊, 有人盯上了, 肯定 api 是有价值得
    glcolof
        18
    glcolof  
       15 天前
    使用 https 协议,在 api 调用参数里面增加“用户名-密码”或者访问 token 字段,如果服务是收费的,每次调用都会扣费;或者免费服务限制调用次数调用频率。
    总不会有人故意泄露自己的用户名-密码或者 token 吧?
    jackOff
        19
    jackOff  
       14 天前
    额,你不会是央视频吧?你可以试试找法务解决
    EndlessMemory
        20
    EndlessMemory  
       14 天前
    新增一个接口参数,没有带新接口参数的全部返回假数据
    sobev
        21
    sobev  
       14 天前
    @fruitmonster 妙啊妙啊
    12101111
        22
    12101111  
       14 天前
    wasm 不需要反汇编,可以直接按你的 js 调用 wasm 的方法在 nodejs 这类运行时里直接运行。
    真正的加密必须在服务端用用户 id 做运算,wasm 只能当做一种 Pow 的限速器。
    wogogoing
        23
    wogogoing  
       10 天前
    @fruitmonster 秒啊!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1768 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:18 · PVG 00:18 · LAX 09:18 · JFK 12:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.