2015-06-21 128 views
0

我正在實現一對多多協議服務器(+客戶端),我想添加雙向安全。這是我想要實現的:雙向安全(多協議)

  1. 客戶端和服務器都以安全的方式彼此認證。客戶端不涉及人際交互。
  2. 客戶端的代碼校驗和在服務器上進行驗證。
  3. 客戶端的代碼可能是用解釋型語言(如python或javascript)編寫的,所以我想阻止在有人訪問客戶端之後危及網絡的可能性(儘管這可能是過度的,因爲我的客戶端將不會在服務器上執行任何操作,只是報告其操作結果)

我應該如何設計身份驗證流程?我應該使用哪些技術/ google,或者 - 在較低級別上 - 我可以嘗試哪些現有解決方案? (我的原型是使用node.js編寫的)

+0

服務器如何獲取客戶端代碼進行校驗? –

+0

在你的情況下,客戶端不僅是瀏覽器,還可以寫在其他服務器端腳本中? –

+0

是的,沒有瀏覽器。服務器是node.js,客戶端可能是用node.js或其他東西編寫的,但首先我要從節點開始 – wildcard

回答

1

SSL可以通過兩種方式進行身份驗證。開箱即用,沒有什麼特別需要。人們甚至可以免費獲得證書(自簽名或來自認可的CA)。

客戶端證書可用於區分客戶端(如果需要的話),類似地,它們可用於防止同時登錄的客戶端的副本。

你從根本上不能做的是防止聰明的惡意用戶以這樣一種方式控制客戶端,即他們逆向工程師如何與服務器交互,而不是運行你想要的客戶端,運行他們自己的,仍然像在它是真正的客戶,但不是。

不可能信任客戶端的解決方案是不要讓它做你必須相信它不會改變的代碼。這通常意味着從2層模型(繁重的客戶端 - 服務器)轉換到3層模型,其中您要運行的代碼保存在您控制的硬件上,並且只有(不可信的)用戶接口被推送到用戶控制的硬件。