前后端分离的项目如何防止 api 被第三方利用

2019-02-14 10:53:19 +08:00
 imherer
假如 api 是不需要任何鉴权,就像 v 站的 api 一样,第三方可以利用 api 去做一些小程序或者内容展示的网站

我不想让第三方利用我的 api,但是又不能做鉴权

这个好像是不能杜绝的吧,只能从利用 api 的难度方面入手?
13733 次点击
所在节点    程序员
88 条回复
ttvast
2019-02-14 10:55:08 +08:00
Referer 控制
c0878
2019-02-14 10:56:53 +08:00
IP 白名单
liuxey
2019-02-14 10:57:55 +08:00
既然没有鉴权,完全杜绝不可能,通过编码能 100%模拟浏览器引擎,只能加监控,做策略,防止被滥用
li24361
2019-02-14 11:00:03 +08:00
为什么不能鉴权?
确实需要开放,那就限定 ip 调用次数,能防小白
Inside
2019-02-14 11:00:45 +08:00
你想一下,为什么你能区别自己的前端和第三方前端,如果你能从逻辑上区别,那说明可以做鉴权嘛。
imherer
2019-02-14 11:01:14 +08:00
@c0878 这些 API 都是客户从浏览器发起请求的,IP 白名单不行吧
imherer
2019-02-14 11:01:59 +08:00
@ttvast 这个好像也能模拟吧
fishioon
2019-02-14 11:02:17 +08:00
不鉴权肯定没办法杜绝,不过可以增加一些利用的难度;
比如 api 调用中增加一个 key 参数,这个 key 有效期为一天(或者更短)
这个 key 如何传递到客户端呢?比如在页面中返回,同时页面中对该 key 进行算法加密等等(就是让别人没那么容易拿到这个 key )
no1xsyzy
2019-02-14 11:02:19 +08:00
最后就是个互相赛跑的游戏
shuax
2019-02-14 11:03:01 +08:00
和防爬虫一样
imherer
2019-02-14 11:03:27 +08:00
@Inside 好像区分不了。因为所有的请求都是在客户端发起的,只要是在客户端,第三方都可以模拟。 应该只能像 3 楼说的
whypool
2019-02-14 11:03:49 +08:00
限制请求的并发,主要防爬虫一波流

ip 请求频率限制,超过黑名单
NjcyNzMzNDQ3
2019-02-14 11:04:01 +08:00
淘宝的 security-x5 了解下,分分钟想让你砸了电脑 :doge
Malthael
2019-02-14 11:04:08 +08:00
@imherer ip 白名单是你部署前端服务器的 ip,跟客户浏览器在哪打开的网站没有关系。
imherer
2019-02-14 11:04:50 +08:00
@li24361 就好比做一个文章查看的页面,游客也可以查看所有文章,那么这里如何做鉴权呢?
cedoo22
2019-02-14 11:07:05 +08:00
... 第三方可以利用 api 去做一些小程序或者内容展示的网站

我不想让第三方利用我的 api,但是又不能做鉴权 ....


你这需求怕是要打锤哦, 你到底要不要第三方用你的 API ????
想一顿爆锤
好了,拖下去
imherer
2019-02-14 11:09:13 +08:00
@cedoo22 也许是没表达清楚,我的意思是第三方可能会利用 api 去做小程序或者展示网站,但是我不想让他们这样去做...
DavidNineRoc
2019-02-14 11:13:41 +08:00
如果实在 web, 基本不太可能.
小程序的话,别人看不到你的源码.
每一次请求都声称一个 sign 参数验证.
前端: 加点时间戳, 自己小程序写死一个 code, 然后手写一个前后端通用的对称加密算法就行了.
后端: 解密之后,验证是否过期等等...
cando
2019-02-14 11:15:38 +08:00
参数加密后台验证,用户认证 auth 等等。
或者直接不提供接口咯
mauve
2019-02-14 11:17:38 +08:00
nginx gateway

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/534809

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX