WebSocket安全URL加密

3
当使用 wss:// 时,URL 本身是否也加密了呢?例如,假设你有一个简单的 Sinatra Web 应用程序,用于接受 Web Socket 连接:
class App < Sinatra::Base

  get "/ws/:api_key/room/:id" do |api_key, id|
    user = User.find_by(api_key: api_key)
    room = Room.find(id)

    if RoomAuthenticator.new(room).authorized?(user)
      request.websocket do |ws|
        ws.onopen { publish(room, "#{user.name} connected.") }
      end
    else
      401
    end
  end
end

然后从客户端/浏览器中,使用JavaScript:

new WebSocket("wss://" + window.location.host + "/ws/" + user.api_key + "/room/" + room.id);

用户API密钥在URL中是加密的吗?还是容易受到攻击?

1个回答

2
是的,URL将会被加密。安全的Web套接字使用传输层安全协议(就像HTTPS一样)来通过安全连接隧道化所有数据。请参见RFC 6455第4节

如果/secure/为true,则客户端在打开连接并发送握手数据之前必须在连接上执行TLS握手。[...]此通道上的所有进一步通信都必须通过加密隧道运行。


谢谢澄清。我不确定通过wss:// URL传递api_key是否是一种安全的方式来传输这些信息。似乎无法通过WebSockets使用查询参数(例如:?api_key=VALUE)或标头(例如:x-api-key: VALUE)。 - Michael van Rooijen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接