2011-03-04 38 views

回答

0

連接前,客戶端應綁定到低於1024的端口。此端口範圍爲root保留。

+1

但不是端口的拒絕服務,客戶端綁定。假設客戶想要啓動我的客戶編已經綁定的服務。 – Cuurious 2011-03-04 09:57:43

+0

是的,該端口將被其他人攔截。然而,這是確保某些事情是根源的傳統方式。 – Erik 2011-03-04 09:59:13

+0

您可以始終綁定,從<1024連接到服務器,然後從> 1024連接並通過根連接告訴服務器其他連接正常。 – Erik 2011-03-04 10:00:21

1

如何確保[任何關於 客戶端程序]服務器程序?

你不行。如果您的安全模型要求服務器知道客戶端是否爲root用戶,則表示您沒有安全性。

讓我們考慮一個可能性:你的網絡協議包括像這樣的通知:

My-Uid-Is: 0 

你的客戶,你寫的完全安全的版本,有可能實現這樣的此通知:

fprintf(socketFd, "My-Uid-Is: %d\n", getuid()); // send server my identity 

但是,我的客戶,即我在未經您知情或同意的情況下編寫的那一項,將執行如下通知:

fprintf(socketFd, "My-Uid-Is: 0\n"); // lie to server about my identity 

流行測驗:你的服務器怎麼知道它是在跟你的真實客戶還是我說謊的客戶?答:它不能。事實上,如果你推廣這個概念,你會意識到服務器不能依賴客戶說的任何東西的有效性(是否意味着真實性,格式,範圍檢查等)。

在這種特定情況下,使用客戶端源端口號與其他選擇一樣不可靠。是的,許多操作系統需要root權限才能綁定到低編號的源端口。但是我的電腦可能沒有運行你最喜歡的操作系統。我可能會從我自己的電腦上運行我自己的操作系統,但沒有這個功能。記住:你不能相信客戶說的任何話。

有一些涉及公鑰加密的技術可以用來保證您正在與之通話的程序能夠訪問特定的祕密。假設祕密得到充分保護,可用於保證特定人員,計算機或帳戶產生請求。我會讓其他人討論PKI以及它如何適用於您的情況。

+0

非常好的說...謝謝...但由Erik給出的解決方案提供足夠的安全性,現在...會想到公鑰加密作爲TODO – Cuurious 2011-03-08 05:08:55

相關問題