
1對1定制服務(wù),PC端+手機端+小程序多端應(yīng)用
最佳Node.js安全實踐
2021年11月06日瀏覽:
數(shù)字產(chǎn)品安全是會議中的大象,每個人都在談?wù)撍?,但不是所有人都認真對待它。我們想向你揭示所有應(yīng)用安全的重要性,這就是為什么我們在這里編寫了一個最佳Node.js安全實踐的簡短清單。
為什么node . js ?js是逐漸占領(lǐng)市場份額的主要JavaScript運行時之一,在其核心,Node.js是安全的,然而,當你安裝第三方包,你的方式配置,安裝和部署可能需要一些額外的努力,以使一個網(wǎng)頁應(yīng)用程序更加安全和保護從在線攻擊。
配置管理
安全HTTP標頭
你需要在我們的網(wǎng)站上設(shè)置一些HTTP頭信息。它們包括:
1)嚴格傳輸-安全強制安全(通過SSL/TLS的HTTP)連接到服務(wù)器
2)X-XSS-Protection使跨站點腳本(XSS)過濾器內(nèi)置到最新的網(wǎng)頁瀏覽器
3)x幀選項提供點擊劫持保護
4)Content-Security-Policy可以防止大量的攻擊,包括跨站點腳本和其他跨站點注入
5)X-Content-Type-Options幫助瀏覽器避免在聲明的content-type之外嗅探響應(yīng)。
許多有經(jīng)驗的網(wǎng)頁開發(fā)人員推薦使用Herokuapp,它是檢查您的網(wǎng)站是否有所有需要的標題的好工具。
客戶端上的敏感數(shù)據(jù)
在開發(fā)前端應(yīng)用程序時,一定要確保沒有使敏感數(shù)據(jù)(如源代碼中的秘密api)對所有人都可讀。不幸的是,沒有任何自動化工具可以幫助您檢查它。這就是為什么許多應(yīng)用程序開發(fā)人員建議使用非常傳統(tǒng)的方法,比如使用拉請求和定期檢查代碼。
認證方式
強力保護
蠻力是列舉所有可能的候選者并調(diào)查它們是否滿足問題陳述的要求的過程。例如,如果是網(wǎng)頁應(yīng)用程序,那么登錄端點可能是最佳選擇。
為了保護您的網(wǎng)頁應(yīng)用程序免受這種攻擊,您應(yīng)該限制速率。我們的團隊建議應(yīng)用NPM Js的速率限制程序包。
當然,您可以將其轉(zhuǎn)換為中間件并簡單地將其插入到任何應(yīng)用程序中。Koa和Express都有很棒的中間件。
您可以在給定的時間窗口中限制用戶嘗試登錄的次數(shù),它將幫助您消除突然暴力攻擊的風(fēng)險。您還可以利用Hydra檢查服務(wù)在這些場景中的工作方式。
會話管理
不應(yīng)低估cookie的安全使用,尤其是在必須跨無狀態(tài)協(xié)議(如HTTP)保持狀態(tài)的動態(tài)網(wǎng)頁應(yīng)用程序中。
cookie的標志
在這里你可以找到一個屬性列表,應(yīng)該為每個cookie以及它們的含義建立。
Secure—此屬性告訴瀏覽器僅在請求通過HTTPS發(fā)送時才發(fā)送cookie
HttpOnly—此參數(shù)通常用于避免與跨站點腳本有關(guān)的攻擊,因為它不提供通過Javascript訪問cookie的機會。
cookie范圍
域—此屬性通常用于與請求鏈接的服務(wù)器域進行比較,接下來,如果域匹配,或者如果域是子域,則修改path參數(shù)。
Path—在域旁邊,還可以指定與cookie相關(guān)的URL路徑。如果路徑與域匹配,則在請求中發(fā)送cookie。
Expires—此參數(shù)用于建立永久cookie,因為cookie直到設(shè)置日期過期的那一刻才過期。
您可以通過應(yīng)用cookie包在Node.js中輕松生成此cookie。但是,它的級別相當?shù)?,這就是為什么您可能會使用包裝器,例如cookie會話。
CSRF
縮寫CSRF表示跨站點請求偽造,本質(zhì)上,它是一種觸發(fā)登錄用戶在網(wǎng)頁應(yīng)用程序中不需要的操作的攻擊。這些威脅只針對改變狀態(tài)的請求。它們的目標是數(shù)據(jù)泄漏,因為黑客沒有機會看到偽造請求的響應(yīng)。
為了避免類似攻擊的風(fēng)險,可以應(yīng)用CSRF模塊。還有一些用于不同框架的包裝器。例如,有CSRF模塊:用于CSRF保護的快速中間件。
錯誤處理
錯誤代碼,堆棧跟蹤
在各種bug場景中,應(yīng)用程序可能會暴露底層基礎(chǔ)設(shè)施的敏感細節(jié),比如:X-Powered-By:Express。
通常,堆棧跟蹤并不認為自己是漏洞,但它們經(jīng)常會發(fā)現(xiàn)對黑客有吸引力的信息。作為產(chǎn)生錯誤的操作的結(jié)果提供調(diào)試信息通常沒有幫助。最好總是記錄它們,但不要向用戶顯示它們。
結(jié)論
我們的網(wǎng)頁開發(fā)公司很樂意與您分享這個安全實踐清單,它將幫助您避免許多錯誤,并且永遠不會在Node.js開發(fā)中出錯。有更多的可操作的戰(zhàn)略和戰(zhàn)術(shù),我們只列出了其中的幾個,但是,我們希望他們將有助于您和授權(quán)您創(chuàng)建更安全的應(yīng)用程序。