Nodejs系列安全總結

使用sslyze測試SSL/TLS漏洞

``./sslyze.py --regular example.com:443``

HSTS

在配置管理部分,我們簡要的談到了它 。 Strict-Transport-Security 頭部強制瀏覽器和服務器使用安全連接(HTTP over SSL/TLS),下面的配置來自Twitter:

``strict-transport-security:max-age=631138519``

這裡的max-age,指定了瀏覽器應該自動將HTTP請求轉換為HTTPS的有效時間。

可以通過下面的命令簡單的測試:

``curl -s -D- https://twitter.com/ | grep -i Strict``

拒絕服務

賬號鎖定

帳戶鎖定是一種減輕暴力猜測攻擊的技術,在嘗試登錄失敗幾次之後,在給定時間內系統禁止其登錄,最初只限制幾分鐘,以後成倍的增加限制時間。

你可以使用上面我們討論過的限速模式來抵禦這種攻擊。

正則表達式

這種攻擊利用了大多數正則表達式實現的極端情況,導致它們工作非常緩慢。這種正則表達式被稱為Evil Regexpes:

  • 使用重複分組

  • 重複組中出現:

  • 重複

  • 交替重疊

([a-zA-Z]+)*、 (a+)+ 或者 (a|a?)+ 都是有漏洞的正則表達式,像aaaaaaaaaaaaaaaaaaaaaaaa!這樣簡單的輸入就可以產生很大的計算量。更多信息請看 正則表達式DOS.

你可以使用工具 safe-regex檢查你的正則表達式,它可能會誤報,所以小心使用。

$ node safe.js '(beep|boop)*'true$ node safe.js '(a+){10}'false

異常處理

異常代碼、錯誤跟蹤棧

在不同的錯誤場景中,應用程序可能洩漏有關底層基礎設施的敏感細節, 比如:X-Powered-By:Express。

錯誤跟蹤棧本身不是錯誤,但是它經常洩露讓攻擊者感興趣的信息。提供debug信息作為操作產生錯誤的結果是一種糟糕的做法,你應該打印而不是向用戶輸出這些信息。

NPM

能力越大責任越大,NPM有大量可以方便使用的模塊,相應的你需要檢查你的應用用到了哪些,它們可能包含了至關重要的安全問題。

Node 安全項目

幸運的是Node安全項目有一個非常棒的工具,你可以檢查你使用的模塊的已知漏洞。

npm i nsp -g# either audit the shrinkwrapnsp audit-shrinkwrap# or the package.jsonnsp audit-package

你還可以使用 requireSafe 來幫你做這件事。

Snyk

Snyk和Node安全項目相似,但是它的目標不僅是提供工具發現漏洞,還能在你的項目倉庫中解決相關安全問題。

可以嘗試一下snyk.io。

Final

這個清單基於 Web Application Security Testing Cheat Sheet( OWASP維護)並且很大程度受它影響。

開放Web應用安全項目(OWASP)是一個全球性的非盈利慈善組織,致力於提高軟件的安全性


分享到:


相關文章: