关于 coturn - turn 的授权的一些疑惑

2022-11-24 11:30:12 +08:00
 MoonWalker
众所周知,webrtc 可以在网络环境不支持 P2P 的情况下通过 turn 服务中转, 在浏览器端配置 iceserver 有两种方式
1:明文在 js 中写死 credential 和 username (这肯定是不行的)
2: 通过 coturn github wiki 中说的自己实现 rest-api 的方式,返回一个带有效期的账号密码(见 https://github.com/coturn/coturn/wiki/turnserver)

我的疑惑:
这个 rest-api 怎么保证只被自己网站调用而不能被他人使用,如果他人能够使用 这些措施有什么意义?
1504 次点击
所在节点    程序员
21 条回复
jeesk
2022-11-24 11:57:34 +08:00
网页不太可能做到安全的。app 都不行, 逆向只是时间问题。
jeesk
2022-11-24 11:58:36 +08:00
增加每个用户只有 1 个连接的方式看看能不能缓解这个问题
lairdnote
2022-11-24 12:03:20 +08:00
加一个 origin 检查。方法太多了
MoonWalker
2022-11-24 12:29:22 +08:00
@lairdnote 可以细嗦吗😀
Opportunity
2022-11-24 13:44:10 +08:00
普通的 rest-api 怎么鉴权它就怎么鉴权啊,这个又不在 coturn 自己的范围里
billzhuang
2022-11-24 14:11:29 +08:00
@Opportunity 同意你的观点。
MoonWalker
2022-11-24 14:45:44 +08:00
@Opportunity @billzhuang
我知道不在 coturn 范围内,任何人都可以调用到这个接口获取 turn 账号密码(即便是有类似登录鉴权),就意味着别人可以用我的 turn 来转发流量啊
billzhuang
2022-11-24 15:03:22 +08:00
是的,我之前的做法是在 render 这个页面时把生成的有有效期的账号密码放到页面里并混淆下,而不是通过某个具体的 api 。
MoonWalker
2022-11-24 15:11:36 +08:00
@billzhuang 这样做适用于服务端渲染的应用,只能说可以稍微增加点破解难度吧
chairuosen
2022-11-24 15:31:41 +08:00
看起来这个接口是你实现的,你自己给他加鉴权啊。
ElmerZhang
2022-11-24 15:51:39 +08:00
给你自己网站加用户系统,只有你自己网站的用户可以调这个接口
ElmerZhang
2022-11-24 15:52:43 +08:00
其实 turn 服务器耗不了多少性能,直接开放也没太大问题,网上有很多开放的 turn 服务器可以用
MoonWalker
2022-11-24 15:55:49 +08:00
@ElmerZhang 你说的是 stun 吧。。。
LinePro
2022-11-24 16:22:12 +08:00
按我理解,这个 REST API 应该不是直接在前端调用的,应该是在你自己写的后端程序里调用。然后如何鉴权就是你自己的后端程序考虑的事情。
billzhuang
2022-11-24 20:46:51 +08:00
@ElmerZhang 怎么会?网上没有开放的 turn ,只有 stun 。
并且 turn 主要消耗的是带宽和流量,而非 cpu 、memory 。
billzhuang
2022-11-24 21:01:35 +08:00
@LinePro 但最终还是会生成给前端,供 webrtc 的 client 使用,所以即使 api 没有被泄露,但 api 生成的结果还是被泄露了。

而 op 是想保护最终这个结果。
LinePro
2022-11-24 21:44:11 +08:00
@billzhuang #16 这个问题就和防爬虫是一个性质的了,鉴权是鉴别用户的,但不是鉴别客户端类型的。解决这个问题的措施可以参考反爬措施。但不管怎样,我认为这终究是个猫鼠游戏,没有从根源上解决问题的好办法,只能采取一些缓解措施。比如限制访问频率或者识别爬虫特征,类比到 TRUN 服务器就限制流量和速率,或者给 TRUN 服务器动手脚对流量特征进行检测等等。

理解保护最终结果避免滥用的意图,但是这个和要保护内容不被爬虫爬一样,是个不容易从根源解决的问题。当然,增大滥用的成本还是没有问题的,就如同增大爬虫的成本。
billzhuang
2022-11-24 21:49:37 +08:00
@LinePro 同意,增加对方的成本,猫鼠游戏。
as9567585
282 天前
@jeesk 你好,想问下 “每个用户只有 1 个连接” 这个需要怎么配置呢?
as9567585
282 天前
@MoonWalker 你好,楼主,我也有相同的疑问,最后你解决了吗?

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

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

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

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

© 2021 V2EX