2011-12-12 47 views
3

我正在尋找關於'正確的方式'來驗證互連node.js應用程序的建議。用例通常是:共享工作任務,同步數據或控制/監視通道。數據庫有身份驗證,但是應用程序本身呢?安全連接node.js應用程序/工人/羣集的基礎是什麼?

什麼是入侵者(從外部或網絡上的)濫用你的內部連接的風險?它發生了嗎?

我發現很多集羣合作模塊從使用原始套接字喜歡zeromq,但例子從來沒有真正提到安全方面,只是連接到某些IP /端口。但是,你如何確保加入勞動力隊伍的新員工不是敵對的?一名工人如何知道它不被用於惡意目的?

我想在雲託管的網絡的敵意降低​​,然後打開Internet(是???),不過,你是做什麼樣的事情呢?我會說內部https一路都太多了,但是你如何匹配身份?你在每個節點上放一些證書嗎?什麼樣的?那你怎麼檢查它?你什麼時候穿上它?

如果我的數據庫可以用一個簡單的ID/PASS的(純文本還是什麼?)然後我應該應用集羣呢?如果是這樣,你如何確保和管理ID信息?

一個基本的解決辦法是用ssh一些自定義標記到每個節點和應用程序檢查與每個連接節點的一些混雜方案,但我沒有好的行業慣例的想法那麼你覺得呢?

回答

0

如果您使用的是ZeroMQ或Redis等解決方案,請確保爲它們設置了密碼。

你的流程完成的是你的責任。您應該確保您的應用程序沒有任何設計缺陷,因此只有您(從服務器端)或經過身份驗證的用戶可以通過「管道」發送消息(例如,如果您正在設計聊天,請確保只驗證/註冊用戶可以發送消息)。

如果你希望你的本地網絡上額外的安全性,你可以使用iptables

+0

那些設計缺陷,你可以擴大他們可能是什麼?像打開一個套接字並讓我的工作人員連接並獲得工作之後的下一個重要步驟一樣?我把什麼樣的井口放在管道上? – Bartvds

+0

我之前談的更多,你應該確認誰可以發送消息,誰不能發送消息。例如,你有一個聊天服務器,只有那些連接可以發送消息(到服務器,然後服務器廣播到所有),確保用戶是auth(檢查會話)。在這種情況下,當你有特定的角色時,你必須執行額外的檢查(看看客戶是否有權利)。 – alessioalex

+0

角色是一個很好的角色,但我怎麼知道我的圖像 - thumnailing-queue-worker是auth?我有一個用戶註冊模塊,我的數據庫有id/pass,但是你對集羣節點和類似服務有什麼作用?特別是如果他們也是由node.js驅動的? – Bartvds