如何限制或发现 api 接口的二次封装和转发行为 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aschoolboy
V2EX    职场话题

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

  •  
  •   aschoolboy 2023-02-24 13:24:52 +08:00 3856 次点击
    这是一个创建于 961 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    让我提供可行性方案.

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

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

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

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

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

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

    28 条回复    2023-02-28 14:55:56 +08:00
    zhazi
        1
    zhazi  
       2023-02-24 13:36:29 +08:00
    让我们看看神奇海螺怎么说
    限制或发现 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  
       2023-02-24 13:49:02 +08:00
    “严格管控 API 接口共享”,这已经说得很明确了,是防止第三方合作者,把秘钥等认证方式共享出去。二次封装跟转发差不多,都是把你们原本是给第三方合作者(一包方)用的接口,第三方把接口包装了一下当成自己的接口再买给第三方的第三方(二包方甚至更多包方)。二次封装是把 key 套个壳就扔给二包方使用,二包方直接访问你们的接口。转发是 key 不外放,二包方也不能直接访问你们的接口,他们需要先访问一包方,再有一包方代为访问你们的接口。

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

    普通用户想靠 F12 修改内容,还是要有点水平才行的。
    InDom
        6
    InDom  
       2023-02-24 14:26:41 +08:00
    复杂签名,一次性请求,限制频率,加强监测.
    table cellpadding="0" cellspacing="0" border="0" width="100%"> mafanding
        7
    mafanding  
       2023-02-24 14:38:44 +08:00
    1.限制 IP 和调用次数(这已经不是限制频率了,而是要求业务方告诉你们他一天的业务预计调用次数按照这个限制)
    2.收费

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

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

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

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

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

    谷歌给你提供几个加了密的 dll 。。。你去调用吧。2333
    zhang77555
        22
    zhang77555  
       2023-02-24 16:01:10 +08:00
    只能用频率限制,因为只要别人是个合法用户他就总有办法二次封装
    控制调用频率其实也是能解决你交差的问题的,因为他把你们的服务封装给别人用,你控制了频率,那么他这个服务也卖不了几个人了
    leon0204
        23
    leon0204  
       2023-02-24 16:02:35 +08:00
    加个验证码,人脸识别 ,封装之后的用户怎么能提供呢 ,这不就好了
    outas
        24
    outas  
       2023-02-24 16:05:33 +08:00
    这个问题各大开放平台都已经帮你解决好了,限制调用频率、每日上限次数、收费,直接照着抄
    yc8332
        25
    yc8332  
       2023-02-24 16:35:16 +08:00
    无解的。只能限制频次、限 ip ,增加付费而已。
    lakehylia
        26
    lakehylia  
       2023-02-24 16:42:47 +08:00
    大数据呗。比如支付接口,客户是注册的餐饮,但是经常大半夜调用接口,那肯定是卖接口了。客户是餐饮,但是支付的金额老是 100 / 200 / 500 这样的整数,卖接口了。等等。
    wanguorui123
        27
    wanguorui123  
       2023-02-24 17:19:30 +08:00
    单点登录
    aschoolboy
        28
    aschoolboy  
    OP
       2023-02-28 14:55:56 +08:00
    感谢大家提供思路,公职部门,只要个方案,没有好办法根本杜绝,但我已经应付过去了.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2612 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 06:18 PVG 14:18 LAX 23:18 JFK 02:18
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86