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

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

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

这个好像是不能杜绝的吧,只能从利用 api 的难度方面入手?
13734 次点击
所在节点    程序员
88 条回复
deepdark
2019-02-14 13:27:37 +08:00
@Chingim 可以,但是伪造出来的数据不够顺滑,比如鼠标移动范围,速度,页面停留时间等等。况且伪造这个,对于爬虫来说爬取效率就降低了,对于规则的研究成本高了。说白了爬虫和防爬就是回合制,不断的完善自己的过程
xuanbg
2019-02-14 13:35:23 +08:00
生成一个证书,给用户发个公钥,调用 API 需要提供公钥加密的密码
wizardoz
2019-02-14 13:38:06 +08:00
把前端项目改为后端渲染模式。API 服务对外不可见,只有服务端的前端服务自己可访问。用户拿到的就是渲染后的数据,同时也实现了前后端分离
580a388da131
2019-02-14 13:43:57 +08:00
内网
janus77
2019-02-14 13:52:10 +08:00
这么折腾还是直接加个鉴权来的舒服,毛病。
dapang1221
2019-02-14 13:52:32 +08:00
你的客户端是什么端,ios 安卓这种应该可以加客户端证书,双向验证,H5 网页的话,这个真没办法,前端再怎么加密基本也能被破
hilbertz
2019-02-14 13:56:20 +08:00
限流啊
azhangbing
2019-02-14 14:27:51 +08:00
楼主又不加锁还想防盗 怎么可能
Trumeet
2019-02-14 14:29:53 +08:00
如果不是什么要紧的东西,开放个 API 也挺好的。
feikeq
2019-02-14 15:11:30 +08:00
如果是网站,你可以在后端判断一下来访的地址是否合法;
如果是客户端,那你就要协定一种密钥方式,提交数据时后端难证`密钥是否合法;
JesseHeisenberg
2019-02-14 16:16:02 +08:00
这应该叫防重放吧。。。。后台动态参数,前端非对称加密后放到 header。只有你能用。。。。
keepsmilence
2019-02-14 16:17:08 +08:00
@flyingghost 这个比喻好,不想鉴权的需求就好比不要上锁还想要防小偷似的;
lcy630409
2019-02-14 16:23:21 +08:00
加一个 key 吧,就明文给前台,但是这个 key 不规律的自动更换,能挡住大部分人了
pynix
2019-02-14 16:26:51 +08:00
rate limit
encro
2019-02-14 16:33:57 +08:00
首先,你怎么得到这个客户端是自己的?
假如客户端是浏览器,服务端下发一个 session token 给客户端浏览器,客户端浏览器通过这个 session token 取得会话权。(既然是 session 就要有时间限制)
假如客户端是手机,需要 @xuanbg 说的: 生成一个证书,给用户发个公钥,调用 API 需要提供公钥加密的密码
kisshere
2019-02-14 16:41:19 +08:00
个人一点意见,什么价 referer 简直就是笑话,限制 ip 次数你拿各种代理池闹着玩的,是我的话,前端和后端通信密文传输,密文的加密结果涉及到各种用户的鼠标手势、停留时间等等,当然这个也不可能完全防得住

总之,没有绝对的防止手段
robinlovemaggie
2019-02-14 16:47:35 +08:00
参考微信的完全封闭,路子狂野
SoulSleep
2019-02-14 16:48:51 +08:00
我不想让第三方利用我的 api,但是又不能做鉴权

为啥不行,JWT、oauth2 都可以
xnode
2019-02-14 16:50:10 +08:00
放在内网里
lhstock
2019-02-14 16:51:17 +08:00
求教一下 怎么获取别人的 API。

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

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

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

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

© 2021 V2EX