V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aschoolboy
V2EX  ›  职场话题

如何限制或发现 api 接口的二次封装和转发行为

  •  
  •   aschoolboy · 285 天前 · 2642 次点击
    这是一个创建于 285 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天领导给我派了个任务.

    原文:"严格管控 API 接口共享,有效限制并发现二次封装、转发行为."

    让我提供可行性方案.

    按我的理解,如果把接口文档和秘钥给别人了.别人拿到数据想怎么处理怎么处理,根本无法触及.

    我只能做到拦截攻击者修改请求参数,拦截重复的请求.

    就是防止用户看了 f12,把参数一改,这样请求.

    是不是我对封装和转发的理解不对?

    另外提一嘴,这是省处 x 局传下来的指示,无法反驳,必须做.做不到忽悠也要忽悠过去.

    大家能指点下如何实现或者如何忽悠吗

    28 条回复    2023-02-28 14:55:56 +08:00
    zhazi
        1
    zhazi  
       285 天前
    让我们看看神奇海螺怎么说
    限制或发现 API 接口的二次封装和转发行为,可以考虑以下几种方法:

    API 密钥限制:可以在 API 接口中加入 API 密钥验证,限制只有特定的应用程序或开发人员才能够调用 API 接口。这样可以防止未经授权的第三方应用程序或开发人员封装和转发 API 接口。

    记录 API 调用日志:记录 API 调用日志可以帮助开发人员追踪和监视 API 的使用情况,包括 API 被哪些应用程序或开发人员调用、调用次数和调用频率等。通过这些信息,开发人员可以判断是否存在二次封装和转发行为。

    API 访问限制:可以设置 API 的访问限制,例如限制 API 的调用次数、频率和流量等。这样可以防止过度使用和滥用 API 接口,减少二次封装和转发的可能性。

    加密传输:在 API 接口的传输过程中使用加密技术,例如 SSL/TLS 等,可以防止第三方应用程序或开发人员通过网络拦截和窃取 API 接口数据。

    数字签名:可以在 API 接口中加入数字签名验证,确保请求和响应数据的完整性和安全性。这样可以防止第三方应用程序或开发人员篡改 API 接口数据。

    以上方法可以有效地限制或发现 API 接口的二次封装和转发行为,但需要开发人员在设计 API 接口时就考虑这些因素,并对 API 接口进行适当的安全设计和实现。
    nothingistrue
        2
    nothingistrue  
       285 天前
    “严格管控 API 接口共享”,这已经说得很明确了,是防止第三方合作者,把秘钥等认证方式共享出去。二次封装跟转发差不多,都是把你们原本是给第三方合作者(一包方)用的接口,第三方把接口包装了一下当成自己的接口再买给第三方的第三方(二包方甚至更多包方)。二次封装是把 key 套个壳就扔给二包方使用,二包方直接访问你们的接口。转发是 key 不外放,二包方也不能直接访问你们的接口,他们需要先访问一包方,再有一包方代为访问你们的接口。

    类比到互联网服务可能更容易理解,就是账号共享。
    Juszoe
        3
    Juszoe  
       285 天前
    限制 IP ,调用频率。无法完全杜绝这种现象,但也能大幅限制了。
    nothingistrue
        4
    nothingistrue  
       285 天前
    防 API 共享比防账号共享容易多了,因为 API 的用户是第三方合作者,是可以强实名的,发现之后就不用防止,直接法务伺候。不过如何发现被共享就是一门大学问了,要看你们接口是如何开放的。然而这不重要,既然是 x 局派领导,领导再派小兵的任务,忽悠一下就行了。
    tool2d
        5
    tool2d  
       285 天前
    以前前端提交数据都是用 json ,我现在全部改成了加密二进制传输。

    普通用户想靠 F12 修改内容,还是要有点水平才行的。
    InDom
        6
    InDom  
       285 天前
    复杂签名,一次性请求,限制频率,加强监测.
    mafanding
        7
    mafanding  
       285 天前
    1.限制 IP 和调用次数(这已经不是限制频率了,而是要求业务方告诉你们他一天的业务预计调用次数按照这个限制)
    2.收费

    没有完全杜绝的办法只能提高调用的成本

    比如:1 天一个 apikey100 次或一个 ip100 次,每次 1 块
    cslive
        8
    cslive  
       285 天前
    ip 白名单
    bk201
        9
    bk201  
       285 天前
    出现异地 ip 调用直接 ban ,但是也拦不住对方做跳板机转发。
    Seulgi
        10
    Seulgi  
       285 天前
    学腾讯开放平台,请求地址白名单,发放 key ,相当于一个 key 会绑定几个请求域名,拿到这个 key 不是这些域名也没法请求。
    wonderfulcxm
        11
    wonderfulcxm  
       285 天前 via iPhone
    除非 ip 白名单,其他都能利用啊
    ONEBOYS
        12
    ONEBOYS  
       285 天前
    说 ip 白名单的人想简单了吧,人家是二次封装,不是直接给别人用
    superliy
        13
    superliy  
       285 天前
    @wonderfulcxm
    @Seulgi
    白名单没用啊,别人是转发
    Seulgi
        14
    Seulgi  
       285 天前
    然后就是记录请求日志,一个 key 每日的调用量,做一个相对异常报警,突然量上去了,肯定不正常。这种情况,可以限制每日调用量,参考各平台的免费接口调用次数方案。如果对方量上去了,要求你们开更高的套餐,让提供原因就行了。zf 部门接口,这么高级别的话,接口调用次数升级肯定都是线下详谈,还是比较安全的。
    SenLief
        15
    SenLief  
       285 天前
    技术解决远没有法律来的快,根据大概的请求数设定一个合同限制,超过限制就停掉这个 token 的请求不就好了。
    Seulgi
        16
    Seulgi  
       285 天前
    @superliy 白名单+接口调用量分级制。按需求来沟通开哪个级别。后续升级提交申请。这种 zf 部门,你申请材料也不可能随便填填就让你过。
    superliy
        17
    superliy  
       285 天前
    看来限制频率是唯一的办法
    VYSE
        18
    VYSE  
       285 天前
    做成 SDK 集成设备指纹, 上风控策略, 找专业安全公司吧
    pengqiuyuan
        19
    pengqiuyuan  
       285 天前
    chatgpt
    pengqiuyuan
        20
    pengqiuyuan  
       285 天前
    您对于接口的封装和转发的理解是正确的,如果其他人拿到接口文档和秘钥,他们可以随意地使用接口返回的数据,这是无法限制的。但是,您仍然可以采取一些措施来尽量限制和发现二次封装和转发行为。

    以下是一些可能有用的措施:

    接口权限管理:确保只有授权的应用程序和用户才能访问 API 接口,通过 OAuth2.0 等授权方式进行权限管理,限制接口的访问者范围。
    请求频率限制:对于接口的访问次数和频率进行限制,限制每个应用程序或用户对接口的访问频率。例如,您可以设置每秒或每分钟最多能够接收多少个请求。
    防止恶意攻击:通过防火墙或其他安全设备防止网络攻击,例如 DDoS 攻击、SQL 注入等,这些攻击可能导致接口数据泄漏或接口服务不可用。
    监控接口访问日志:记录每个接口的访问日志,包括访问者的 IP 地址、访问时间、请求内容等信息,及时发现异常请求行为。
    检查请求头和参数:检查请求头和参数是否合法和正确,如果有异常或错误的请求头或参数,拒绝访问。
    接口数据加密:对于需要保护数据安全的接口,使用加密方式传输数据,例如使用 HTTPS 协议传输接口数据。
    以上是一些可能有用的措施,但无法完全保证二次封装和转发行为不会发生。因此,您可以考虑对于敏感的接口或数据进行特别处理,例如对于一些重要的接口或数据,采用额外的安全认证方式,例如人工审核等。同时,也需要不断地进行接口安全方面的监控和改进,及时发现和修复潜在的漏洞和安全问题。

    最后,关于如何“忽悠”过去这个任务,我建议您尽量遵守领导的指示,采取一些可行的措施来限制和发现二次封装和转发行为,如果有任何不确定或有困难的地方,您可以向领导或其他相关人员咨询并协商解决。
    lambdaq
        21
    lambdaq  
       285 天前
    当年邓亚萍做人民搜索,跟谷歌合作,要求开放 api

    谷歌给你提供几个加了密的 dll 。。。你去调用吧。2333
    zhang77555
        22
    zhang77555  
       285 天前
    只能用频率限制,因为只要别人是个合法用户他就总有办法二次封装
    控制调用频率其实也是能解决你交差的问题的,因为他把你们的服务封装给别人用,你控制了频率,那么他这个服务也卖不了几个人了
    leon0204
        23
    leon0204  
       285 天前
    加个验证码,人脸识别 ,封装之后的用户怎么能提供呢 ,这不就好了
    outas
        24
    outas  
       285 天前
    这个问题各大开放平台都已经帮你解决好了,限制调用频率、每日上限次数、收费,直接照着抄
    yc8332
        25
    yc8332  
       285 天前
    无解的。只能限制频次、限 ip ,增加付费而已。
    lakehylia
        26
    lakehylia  
       285 天前
    大数据呗。比如支付接口,客户是注册的餐饮,但是经常大半夜调用接口,那肯定是卖接口了。客户是餐饮,但是支付的金额老是 100 / 200 / 500 这样的整数,卖接口了。等等。
    wanguorui123
        27
    wanguorui123  
       285 天前
    单点登录
    aschoolboy
        28
    aschoolboy  
    OP
       281 天前
    感谢大家提供思路,公职部门,只要个方案,没有好办法根本杜绝,但我已经应付过去了.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1084 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 18:54 · PVG 02:54 · LAX 10:54 · JFK 13:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.