Web套接字安全URL加密

Web Socket Secure URL Encryption

本文关键字:加密 URL 安全 套接字 Web      更新时间:2023-09-26

使用wss://时,URL本身也加密了吗?例如,假设您有一个简单的Sinatra web应用程序,它接受web套接字连接:

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);

URL中的user.api_key是加密的还是易受攻击?

是的,URL将被加密。安全web套接字使用传输层安全性(就像HTTPS一样)通过安全连接传输所有数据。参见RFC 6455第4节:

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