• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jaskle
V2EX  ›  程序员

后端接口被盗用有什么好办法么?

  •  
  •   jaskle · Jul 27, 2019 via Android · 11564 views
    This topic created in 2482 days ago, the information mentioned may be changed or developed.
    我们软件是小程序和手机 APP,小程序打开后是匿名就能够看到的资源信息,就像一个新闻页。但是发布不久就被别人抄了,页面做的稀烂功能一样,接口用的我们的。但是由于是匿名可以访问,所以只要反编译小程序就能看到 JS。恶心的一批。想问大家有什么办法不?
    65 replies    2019-08-26 16:32:01 +08:00
    xujialiang
        1
    xujialiang  
       Jul 27, 2019
    小程序里限制 openid 的调用次数频率
    jaskle
        2
    jaskle  
    OP
       Jul 27, 2019 via Android
    @xujialiang 没啥用,他小程序直接用的我们的接口,他们连后台都没有,0 成本。
    xuanbg
        3
    xuanbg  
       Jul 27, 2019
    匿名可以访问就没办法了
    wa8n
        4
    wa8n  
       Jul 27, 2019 via iPhone
    能不能把小程序的 AppId 传到后台,你再加个验证
    whileFalse
        5
    whileFalse  
       Jul 27, 2019 via iPhone   ❤️ 63
    改接口,对于老版本接口随机返回反动言论,然后趁对方没发现举报之
    echotpq
        6
    echotpq  
       Jul 27, 2019 via Android
    设置来源,接口 ip 限制等等
    wa8n
        7
    wa8n  
       Jul 27, 2019 via iPhone
    @whileFalse 这波操作真是 666
    KuroNekoFan
        8
    KuroNekoFan  
       Jul 27, 2019 via iPhone
    你们接口不需要 token 校验什么的吗,
    z7356995
        9
    z7356995  
       Jul 27, 2019 via Android
    我以前是在第一次请求页面发送一个随机且唯一 rss public key. 然后以后每次请求都用这个 key 加密,服务器上再解开。因为不是明文,每个请求的 key 又不一样,可以难道一般菜鸟吧
    flyzero
        10
    flyzero  
       Jul 27, 2019 via Android   ❤️ 1
    referer 限制就好了,应该每个小程序对应一个的
    TypeNANA
        11
    TypeNANA  
       Jul 27, 2019 via Android
    请求头里面有 appid,可以借这个来确定请求 app 来源
    freemoon
        12
    freemoon  
       Jul 27, 2019
    后端接口谁写的,别人随便调?
    freemoon
        13
    freemoon  
       Jul 27, 2019   ❤️ 1
    sorry 没看清。相当于你的接口被别人破解了,可以 referer+appid
    wangxiaoaer
        14
    wangxiaoaer  
       Jul 27, 2019 via Android
    @TypeNANA 对方通过服务器反代怎么办?限 IP ? 很多共用公网 IP,限流容易被误伤。
    hhyvs111
        15
    hhyvs111  
       Jul 27, 2019
    鉴权都不做的吗?
    tanszhe
        16
    tanszhe  
       Jul 27, 2019
    多简单的事情
    加个中间件 通过 jscode 验证一下不就完了
    其他人知道接口也无法调用
    treblex
        17
    treblex  
       Jul 27, 2019 via Android
    既然是新闻,在正文加个二维码不就行了🤣🤣
    zgl263885
        18
    zgl263885  
       Jul 27, 2019 via iPhone
    某种角度来讲,反爬只能提高门槛,不能完全杜绝
    xenme
        19
    xenme  
       Jul 27, 2019 via iPhone
    不定时更新下小程序,然后给他的前端返回错误的垃圾内容
    jaskle
        20
    jaskle  
    OP
       Jul 27, 2019 via Android
    @whileFalse 你这个操作好像挺溜,不过危险系数太高。
    其实麻烦就在于匿名访问,就是不需要注册,研究了一下腾讯之类的,他们是 web 不允许跨域,而且加了 referer,所以别人偷不了。但是小程序只要设置 ip 白名单就行,他也不管这个 ip 是谁的,哎,恶心
    jaskle
        21
    jaskle  
    OP
       Jul 27, 2019 via Android
    经查证确实有 referer,可以检验 appid,谢谢大家了
    zibber
        22
    zibber  
       Jul 27, 2019
    小程序静默授权, 接口检查一下登录状态
    sammmmm
        23
    sammmmm  
       Jul 27, 2019
    referer 不是可以修改吗
    pubby
        24
    pubby  
       Jul 27, 2019 via Android
    @sammmmm 小程序本身不能改 referer,所以还是能识别出来的
    jaskle
        25
    jaskle  
    OP
       Jul 27, 2019 via Android
    @sammmmm 只有搭建服务端能够抓取修改 referer,浏览器小程序之类的无权修改,如果对方用服务器我们就能轻松封掉他的 ip,所以不必担心
    jmk92
        26
    jmk92  
       Jul 27, 2019
    @jaskle 你封 referer,他可以加反代,你封 IP,他可以用拨号 vps(全国混播),而且还容易误伤。
    不能简单的让他访问不了,否则他还会想办法,你要让他时不时的不能用,动不动内容还乱了,专门为他写一套流程,得整的他一脸懵逼,访问还是正常的,时不时就出乱七八糟的,让他自己放弃。
    chinvo
        27
    chinvo  
       Jul 27, 2019
    静默授权获取 openid,后台用 openid 取一下用户信息,不是你家的小程序,取不到信息
    neko77
        28
    neko77  
       Jul 27, 2019
    数据投毒,访问频率高的随机搞点乱数据, [斜眼笑]
    mamahaha
        29
    mamahaha  
       Jul 27, 2019
    感觉这都是开学第一天就该解决的问题,你这都毕业好几年了,还没解决。
    mumbler
        30
    mumbler  
       Jul 27, 2019
    简单加个密,就能防住大多数人. 加个 time 和 token 参数,time 传时间戳,客户端都根据时间戳加盐做 md5,生成一个 token,服务器拿到 time 用同样算法生成 token 和传上来的 token 对比一下,不一致就返回假数据,如果一致再检查下时间戳是否过期,过期也返回假数据
    licoycn
        31
    licoycn  
       Jul 27, 2019
    小程序授权,之后的接口都需要身份验证,就解决了,随便他们调反正获取不到数据
    unclemcz
        32
    unclemcz  
       Jul 27, 2019 via Android
    @mumbler 加密代码再混淆一下,能降低小程序 wxapkg 反编译的成功率。
    jianshou
        33
    jianshou  
       Jul 27, 2019
    推送辣鸡广告,自己人接收后处理一下
    Greatshu
        34
    Greatshu  
       Jul 27, 2019   ❤️ 1
    这是免费广告位啊。改接口,接入广告联盟,反撸一波。
    xnode
        35
    xnode  
       Jul 27, 2019
    ...多简单的事情, 让自己的客户端价格 key 验证,服务器屏蔽错误 key
    qoras
        36
    qoras  
       Jul 27, 2019
    加一套鉴权机制
    wozhizui
        37
    wozhizui  
       Jul 27, 2019 via Android
    token 认证
    dremy
        38
    dremy  
       Jul 27, 2019 via iPhone
    动态 csrf token 了解一下,跟时间戳相关加密的
    MMMMMMMMMMMMMMMM
        39
    MMMMMMMMMMMMMMMM  
       Jul 27, 2019
    token 他能反复拿

    referer 能伪造

    真正狠的就是悄悄地 间歇性 给他返回错误结果

    他程序三天两头出 BUG 还重现不了心态肯定崩
    ruandao
        40
    ruandao  
       Jul 27, 2019
    @MMMMMMMMMMMMMMMM 正常用户也被伤了
    ChangQin
        41
    ChangQin  
       Jul 27, 2019
    恶魔一点的,后台来一套 se 情的,能导致直接被封但是你们得用另一个接口。
    善良一点的,加各种验证
    wangningkai
        42
    wangningkai  
       Jul 27, 2019
    一般的简单做法就是接口参数验签
    DipperRoy
        43
    DipperRoy  
       Jul 27, 2019 via Android
    在 header 上塞点无用数据 然后把校验信息字段插进去
    unclemcz
        44
    unclemcz  
       Jul 27, 2019 via Android
    @wangningkai 一台 root 后的安卓机,微信小程序能拿到整个包,然后反编译,现在所知的情况是重要代码加密混淆后能暂时增加反编译的难度,以后可能也无法幸免。
    encro
        45
    encro  
       Jul 27, 2019
    举报就行了,腾讯小程序域名是有限制的。
    IsA26hN4DcQDS7Z9
        46
    IsA26hN4DcQDS7Z9  
       Jul 27, 2019
    抓 1024 的某区文章标题。。

    然后随机返回。。。
    mostkia
        47
    mostkia  
       Jul 27, 2019
    @whileFalse woc 太狠了,你是魔鬼吗?哈哈
    Koreyoshi
        48
    Koreyoshi  
       Jul 28, 2019
    可以考虑把小程序的云开发,当做中间件来使,通过云函数调用你的 API,小程序的权限控制来限制第三方访问。
    moxiaonai
        49
    moxiaonai  
       Jul 28, 2019 via Android
    检验 refer,前端接口加个复杂点的混淆加密 token
    gIrl1990
        50
    gIrl1990  
       Jul 28, 2019
    @neko77 https://www.v2ex.com/t/586612?p=1#r_7678881
    这种行为感觉有点可耻。
    jaskle
        51
    jaskle  
    OP
       Jul 28, 2019 via Android
    se 数据估计被封的不仅是对方的小程序,估计连我的域名和主机都凉了。其实我感觉验证 openid 比较稳,这样即使造假也能控制住
    laoyuan
        52
    laoyuan  
       Jul 28, 2019
    免费流量越多越好啊,不要挡住,悄摸得利用起来
    auciou2
        53
    auciou2  
       Jul 28, 2019
    方案有很多。可以给接口增加一个验证 ID+超时。验证 ID 可以定期更新,或者随机产生,每次都不一样。
    luozic
        54
    luozic  
       Jul 28, 2019 via iPhone
    小程序有 id 的。 搞个网关在前面 监控和调用授权整上
    miniwade514
        55
    miniwade514  
       Jul 28, 2019
    @MMMMMMMMMMMMMMMM 不懂求教,token 他能反复拿是指什么? csrf token 不是一次性的吗?
    NewConn
        56
    NewConn  
       Jul 28, 2019 via Android
    @wangsongyan 你好骚啊🌸🐔
    AppxLite
        57
    AppxLite  
       Jul 28, 2019
    请求加上 jscode,服务端看看能不能解密出 openid,如果不能证明是不合法的调用。
    runtu2019
        58
    runtu2019  
       Jul 28, 2019
    加密接口数据,解密方法用混淆,多跳几个方法!
    locoz
        59
    locoz  
       Jul 28, 2019 via Android   ❤️ 2
    这本质上是一个反爬问题。
    你现在首先要解决接口能直接被别人从小程序上调用的问题,应该有办法可以判断是哪个小程序上调用的。
    解决完这个之后再在接口上加个校验参数,每次调用接口的时候都拿其他参数和当前时间之类的可变值生成一次,并且服务端接到后也生成一次对比是否一致。
    然后在这个基础上将代码进行高度混淆,使生成校验参数的逻辑难以被看懂。
    如果做到这个程度之后还有人搞你,你还可以加上单 IP 频率限制、根据隐藏条件返回假数据、返回数据加密后在小程序端解密等各种手段。
    如果还有人搞你的话你就放弃抵抗吧,他的成本已经被你提到比较高的程度了,经过多次调整、在需要服务器+代理 IP+逆向的情况下依然坚持获取你的数据并放到自己的小程序上展示,说明你的数据价值很高,值得他这么做,你能做的只有举报、走法律手段(成本较高)。
    MMMMMMMMMMMMMMMM
        60
    MMMMMMMMMMMMMMMM  
       Jul 28, 2019
    @miniwade514 无限的 Debug 往前追,可以追出你发 token 的流程,跑一遍就行了。

    emmmm,就好比 QQ 现在的网页登录,先访问了一个 url 给你个值 https://ssl.ptlogin2.qq.com/check

    然后再给他各种偏移加盐(js 里都可以直接扒出 function 来用),带好 cookie,失效前一起再送过去,server 给你发 token 就能用了,失效再拿就好

    比 10 年前的登录是复杂了很多,增加了些破解难度,但实际上还是没用
    winglight2016
        61
    winglight2016  
       Jul 28, 2019
    返回的列表里,随机加上几条广告,详情页面的 URL 加上 redirect 刷广告流量,这样不就坏事儿变好事儿了吗?
    nnnToTnnn
        62
    nnnToTnnn  
       Jul 29, 2019
    e....... 不就是反爬虫么? 这个很简单啊,直接上 google 的点一下就行了
    wongyusing
        63
    wongyusing  
       Jul 29, 2019
    你单纯的反爬,其实没有什么意义。
    爬虫是没有办法反的。迟早会被有志之士爬取。
    这样问你吧。
    你这个小程序是什么类型??
    小游戏??
    新闻??
    还是说文章??
    1044523901
        64
    1044523901  
       Jul 29, 2019
    @Greatshu 哈哈
    Aether
        65
    Aether  
       Aug 26, 2019
    @jianshou 这才是好主意……厉害。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5614 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 312ms · UTC 07:34 · PVG 15:34 · LAX 00:34 · JFK 03:34
    ♥ Do have faith in what you're doing.