2014-02-25 108 views
0

是否有任何現有技術或npm包可以阻止來自NodeJS服務器的所有傳出請求,只允許響應傳入請求?這可以防止在安全審計中錯過深度依賴關係中的電話類型攻擊。防止來自NodeJS服務器的所有傳出請求?

+0

嗯,這聽起來像你的應用程序會防止某些東西或某人在您的服務器上安裝某些東西。 – loveNoHate

+1

@dollarVar node.js和npm具有可以變得相當深的依賴關係解析(傳遞依賴性)。沒有人會安裝應用程序,但有時忽略所有有效的依賴關係並不容易。如果其中一個依賴項包含惡意軟件,則會造成災難。 – hgoebl

+0

好的,如果你認爲**你安裝的是打電話給家裏的人,監視外出的流量並找到罪魁禍首,把他扔出去,永遠不要再相信那個開發者的包裹。如果找不到罪魁禍首,請吞下「http.request()」的代碼,以便它不再連接,但依賴於此(試圖在家中打電話)不會因錯誤而終止服務器。我感到震驚,讓我放下一些東西,讓神經緊張下來http://nodejsreactions.tumblr.com/post/64305120115/frameworks。 – loveNoHate

回答

0

防火牆。

這確實是唯一的方法。請記住,沒有什麼能阻止某些代碼接受來自連接到它的客戶端的命令。

0

看一看

第一個鏈接顯示綁定到特定用戶的防火牆規則。簡單而簡單。爲什麼要使用另一個非常不依賴的npm模塊,你不想信任;-)

+0

對不起,我在哪裏?用戶如何發起服務器的網絡請求?順便說一句,在你的第一個鏈接中,他很困惑地寫着「黑客使用wget將代碼下載到你的服務器中」...... ehhm? – loveNoHate

+0

@dollarVar服務器最經常在特定用戶下運行的進程,例如一些網絡服務器作爲'www-data'。它不是人類用戶,而是技術用戶。現在明白我的意思了嗎? – hgoebl

0

如果你正在尋找純粹的node.js解決方案,你可以做類似的事情。

使用一些模塊,如mockery,你可以限制你的javascript模塊可以對node.js核心進行什麼調用。例如,如果您覆蓋require('net').connect,則會使惡意代碼難以執行某些操作。

我不知道任何現有的解決方案,但它絕對有可能,我真的很想看到一個。


這就是說,通用的辦法解決這個問題是完全不在Node.js的範圍:

  1. 防火牆
  2. AppArmor的