2

在客户端获取会话 cookie 之前,我希望阻止 NodeJS 响应连接尝试,除非对 /login url 发出请求。我添加了以下侦听器以在请求时关闭套接字:

server.listeners("request").unshift (request, response)->
  if(request and request.url == "/login")
    # Set /login as the only entrance point to the server
    # A session cookie will be set here
  else
    # Authenticate based on the session cookie
    # if the session is invalid or doesn't exist abort the connection
    request.connection.destroy()

该解决方案是否足以满足我的要求,或者服务器是否会尝试与客户端协商或在请求时间之前做出响应?我在同一个端口上通过 socket.io 使用 https 和 websocket。

4

2 回答 2

0

在发出请求时,服务器已经在接受来自客户端的数据。对此您无能为力,但除非您担心有人向您提供大量数据,否则这不是什么大问题。

您所拥有的足以满足您的要求,但请记住,您的解决方案的安全性在很大程度上取决于该会话验证。特别是,防止会话由与最初启动的 IP 地址不同的 IP 地址打开是明智的。

于 2012-09-17T02:55:20.810 回答
0

我发现服务器仍然会响应任何连接的 ssl 握手,这意味着我的解决方案是不够的。我将对其进行研究,并可能就如何完成我想要的事情提出一个单独的问题。

于 2012-09-17T11:12:37.500 回答