使用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)是一個全球性的非盈利慈善組織,致力於提高軟件的安全性
閱讀更多 JAVA技術開發 的文章