1
我使用socket.io構建聊天應用程序。如果客戶端在安全性方面收到他們的對話者的套接字ID,那麼可以嗎?客戶可以用這些信息做些什麼嗎?我的假設是沒有,因爲只有服務器可以發送消息給其他客戶端,但我是新來的Websocket機制,所以我沒有完全意識到所有的可能性。用戶套接字標識是否爲關鍵信息? (安全角度)
我使用socket.io構建聊天應用程序。如果客戶端在安全性方面收到他們的對話者的套接字ID,那麼可以嗎?客戶可以用這些信息做些什麼嗎?我的假設是沒有,因爲只有服務器可以發送消息給其他客戶端,但我是新來的Websocket機制,所以我沒有完全意識到所有的可能性。用戶套接字標識是否爲關鍵信息? (安全角度)
socket.id
只是套接字對象的字符串標識符,可以在服務器內部使用,也可以與其他客戶端共享爲該用戶的「句柄」。客戶端無法使用服務器沒有專門支持命令的套接字(連接/斷開連接除外)。
因此,如果id是一個祕密,它是否重要取決於您支持哪些服務器操作以及它們採用哪些參數。默認情況下,客戶端無法使用該ID進行任何操作。所以,除非你的服務器支持一個需要一個id的命令,並且你的設計需要這個id是一個祕密,那麼應該沒有問題。
我不明白爲什麼它會是一個安全問題,但我也不明白爲什麼客戶端需要接收所有其他客戶端的套接字ID。這是由於Websocket API的一些基本方面,還是因爲你的服務器故意發送信息?在後一種情況下,你爲什麼要發送它/客戶對信息做了什麼?你是否使用套接字標識符作爲正確的用戶標識的替身? – aroth
套接字ID不是直接發送,而是用於形成一個唯一的字符串,即房間名稱,並將此字符串傳遞給客戶端(以便惡意的人可以理解房間名稱包含套接字ID)。 另外關於你最後一個問題,直接使用套接字ID作爲用戶ID是不好的做法? (假設用戶的生命週期只是會話的整個生命週期) – Absurdev
@Absurdev:那麼,如果這些房間應該是私人的,並且沒有其他身份驗證可以阻止加入私人房間而不知道它的名字,那麼是的使用公共ID將是一個糟糕的主意。 – Bergi