V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ChefIsAwesome
V2EX  ›  问与答

网页可以和本地程序用 websocket 通信吗?怎么解决安全性问题

  •  
  •   ChefIsAwesome · 2023-10-08 14:16:33 +08:00 · 887 次点击
    这是一个创建于 443 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前见过本地程序起一个 websocket 服务器,网页和这个服务器通信的方案。我没搞清楚要怎么解决安全性问题。
    本地程序怎么识别是哪个网页发来的。网页又怎么知道连本地哪个端口,那个端口是不是目标程序。
    好像必须得用个在线的服务当中间人验证下?
    6 条回复    2023-10-10 00:39:46 +08:00
    JingKeWu
        1
    JingKeWu  
       2023-10-08 14:22:35 +08:00
    websocket 服务器 自己写的 还不知道端口?
    676529483
        2
    676529483  
       2023-10-08 14:38:22 +08:00
    本地哪有什么安全性问题,后端只监听 127.0.0.1 就行了,本质就是 ip 白名单
    Corolin
        3
    Corolin  
       2023-10-08 14:42:18 +08:00
    起了 ws 服务之后 通过链接唤起浏览器 链接上带个&callback= 或者其他任意一个参数 后台处理完丢给有 websocket client 的网页 直接通过合成一个链接 就指向本地的服务器的

    安全性嘛 本地启动的服务 随机一个高位可用的端口 一个特定的 url 路径 只传递给指定服务器 认证或者其他的都是在服务器上的话 理论上还是挺安全可靠的?
    Kirscheis
        4
    Kirscheis  
       2023-10-08 15:01:36 +08:00
    安全性问题和在线服务一样的解决方案啊,在线服务都非常安全,本地比在线的更安全。

    "本地程序怎么识别是哪个网页发来的。"
    - 不用识别,这类程序很多都支持多客户端同时连接,只要验证 token 有效就提供一样的服务

    "网页又怎么知道连本地哪个端口"
    - 拉起 webview 或者客户端的时候会跟着链接,header 或者 data 一起传过去

    "那个端口是不是目标程序"
    - 只有目标程序能提供签名,和 SSL 防止中间人的原理是一样的。如果只在本地跑,没有恶意程序冒充抢占端口,那不用 SSL 也可以

    "好像必须得用个在线的服务当中间人验证下?"
    - 不需要吧应该,为啥会需要中间人
    julyclyde
        5
    julyclyde  
       2023-10-09 21:08:29 +08:00
    为什么写 websocket 的人其中很多都不知道 websocket 的连接建立阶段其实是 HTTP upgrade 呢?
    signalas1
        6
    signalas1  
       2023-10-10 00:39:46 +08:00
    无所谓啊 访问的时候就带鉴权用的 token
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1388 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:19 · PVG 01:19 · LAX 09:19 · JFK 12:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.