2015-09-10 77 views
1

過去一年來,我一直在積極開發一個名爲NitroNet的networking library,並且希望瞭解如何安全地區分連接到同一臺計算機上的服務器的多個客戶端(套接字)。區分同一臺機器上的多個客戶端

我一直在開發使用Java的庫,我目前已經區分使用客戶端UDP端口作爲唯一標識符的客戶端。這工作正常,但我不相信它是實際區分它們的最安全的方法。所以我想知道,是否有更好的更安全的方法來真正區分它們?

當我說我需要「區分它們」時,我的意思是,當從服務器端的客戶端接收到數據包時,我需要能夠僅使用信息在服務器端獲取相應的連接實例從插座。我不希望任何ID號存儲在實際的客戶端上,因爲擔心逆向工程和手動更改ID。任何想法或建議將不勝感激。

回答

1

當客戶端首次連接時,讓初始服務器響應包含使用UDP端口和連接建立時間構建的哈希。這樣你就知道它是同一個客戶端,因爲兩個客戶端不能完全同時在同一個端口上連接。

這並沒有解決逆向工程的恐懼,除非你可以保持你的服務器,並因此哈希構建算法,安全。但是,即使這樣做受到威脅,UDP端口仍然保持不變,這使您處於與當前相同的安全級別。

+0

我正在考慮創建類似於此的令牌/票證系統,我認爲這是唯一的好選擇。我會試試看,謝謝你的建議。 – Jmrapp

相關問題