【问题标题】:Web Socket Secure URL EncryptionWeb Socket 安全 URL 加密
【发布时间】:2014-01-02 10:22:59
【问题描述】:

使用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 是加密的还是容易受到攻击?

【问题讨论】:

    标签: javascript ruby encryption websocket sinatra


    【解决方案1】:

    是的,URL 将被加密。安全 Web 套接字使用传输层安全性(就像 HTTPS 一样)通过安全连接对所有数据进行隧道传输。见section 4 of RFC 6455

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

    【讨论】:

    • 感谢您的澄清。我不确定通过wss:// URL 传递api_key 是否是传输此信息的安全方式。似乎无法通过 Web 套接字使用查询参数(例如 ?api_key=VALUE)或标头(例如 x-api-key: VALUE)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 2011-03-09
    相关资源
    最近更新 更多