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

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

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

    referer 能伪造

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

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

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

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

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

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