Web套接字安全URL加密

时间:2013-12-14 18:59:15

标签: javascript ruby encryption websocket sinatra

使用wss://时,网址本身是否也已加密?例如,假设您有一个简单的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);

网址中的user.api_key是否已加密或是否容易受到攻击?

1 个答案:

答案 0 :(得分:1)

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

  

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