V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MoonWalker
V2EX  ›  程序员

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

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

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

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

    理解保护最终结果避免滥用的意图,但是这个和要保护内容不被爬虫爬一样,是个不容易从根源解决的问题。当然,增大滥用的成本还是没有问题的,就如同增大爬虫的成本。
    billzhuang
        18
    billzhuang  
       8 天前 via iPhone
    @LinePro 同意,增加对方的成本,猫鼠游戏。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2178 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 01:41 · PVG 09:41 · LAX 17:41 · JFK 20:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.