Node.js專案的DevSecOps流程
Node.js是一個開源的開發平臺,用於在伺服器端執行JavaScript程式碼。Node對於開發需要持久瀏覽器-伺服器連線的應用程式非常有用,通常用於實時應用程式,如聊天、社交等應用程式。
DevSecOps是開發、安全和運營團隊在整個專案生命週期中協同工作的一種方式。通常在現有的DevOps團隊和敏捷流程中加上安全性。
這種協作背後的觀念是在開發過程早期就將安全性納入其中。被稱為安全左移。當安全性移到開發過程的“左側”時,應用程式漏洞和缺陷會被更快地發現和解決。這樣可以提高產品版本的安全性,從而減少在生產中應用補丁和故障排除的需求。將DevSecOps應用於Node.js開發可以提高Node.js專案的效率和安全性。
常見Node.js攻擊媒介
以下是一些影響許多Node.js應用程式的網路威脅。
跨站點指令碼(XSS)
XSS攻擊注入經過操縱的客戶端JavaScript程式碼。如果Web應用程式不驗證從DNS輸入的主機名,那麼它們很容易受到XSS的攻擊。攻擊者可以使用表單輸入惡意指令碼並侵入系統。在某些情況下,在檔名中輸入程式碼可以在目標瀏覽器中觸發跨站點指令碼。
網路攻擊者可以使用檔案上傳表單來入侵系統。此漏洞有許多方式可導致系統受損。儘管現代前端框架通常可以緩解這種情況,但在某些情況下,將javascript放入檔名中可能會觸發使用者瀏覽器中的XSS,從而允許竊取會話ID。在其他情況下,攻擊者可能透過將檔案上傳到Node.js伺服器並利用路徑遍歷漏洞執行該檔案來獲取敏感的伺服器資訊。
程式碼注入
開發人員負責編寫安全的應用程式程式碼,但在使用開源元件時,不可能完全保證程式碼的安全性。程式碼注入攻擊包括將惡意程式碼注入目標系統並強制應用程式執行它,從而允許攻擊者訪問程式碼庫。資料驗證不足通常會導致程式碼注入漏洞。
預設Cookie名稱
Cookie透過將使用者操作儲存在底層基礎設施中(例如,記住使用者的選擇或喜好)來幫助Web應用程式識別特定使用者。
開發人員應使用Cookie的自定義名稱(而不是預設值),以防止攻擊者識別和定位 Cookie以及提取資料。
暴力攻擊
暴力攻擊通常會影響Node.js應用程式。攻擊者隨機生成數百萬個密碼,以找到一個有效的密碼登入應用程式。可以透過加強身份驗證機制、限制單個IP允許的登入嘗試次數以及加密儲存的密碼(使用bcrypt.js)來防止暴力攻擊。
跨站點資源偽造(CSRF)
這種型別的會話劫持迫使經過身份驗證的使用者在目標Web應用程式上執行惡意操作。攻擊者劫持合法使用者的會話以繞過安全控制並更改應用程式的狀態。CSRF可以強制使用者轉移資金或更改他們的帳戶詳細資訊,從而可能危及Web應用程式的安全性。
在DevSecOps中實現Node.js安全性
1、為開發人員新增安全性門檻
例如,在IDE中以及在每次提交時新增靜態應用程式安全測試(SAST)。
2、預生產環境中的自動安全測試
在CI/CD過程中,當Node.js應用程式部署到預生產環境時,應該有自動化測試來識別安全配置錯誤和與整合相關的漏洞。此時使用的工具如動態應用程式安全測試(DAST)。
3、執行時保護
沒有安全網來識別生產中的安全問題,DevSecOps流程是不完整的。這需要使用Web應用程式防火牆(WAF)和執行時應用自我保護(RASP)等工具,前者可以檢測和阻止惡意流量,後者可以主動響應攻擊。這兩個工具都向DevOps團隊提供反饋,幫助他們識別和修復底層應用程式中的漏洞。
透過實施這三個階段,您可以確定Node.js安全性不僅僅是一個臨時實踐,而是一個涉及開發人員、運營團隊和安全專家的正式、協調的過程。
來源:
https://devops.com/a-devsecops-process-for-node-js-projects/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2934572/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Node.js 專案部署流程(以阿里云為例)Node.js阿里
- 你需要知道的 DevSecOps 流程及工具dev
- 用於預防勒索軟體的 DevSecOps 流程dev
- DevSecOps 流程中常見名詞縮寫dev
- 如何構建「大型 Node.js 專案」的專案結構?Node.js
- vue專案流程Vue
- beego建立專案流程Go
- 建立Vue專案流程Vue
- Linux部署專案流程Linux
- Django專案搭建流程Django
- Spring MVC——專案的開發流程SpringMVC
- 使用 ndb 除錯你的 Node.js 專案除錯Node.js
- Vue之專案大致流程Vue
- Tomcat部署web專案流程TomcatWeb
- SpringBoot專案建立流程--SpringMVCSpring BootSpringMVC
- 拉鉤專案(一)--專案流程+資料提取
- 使用Node.js執行Cesium專案Node.js
- flutter釋出專案到pub的流程Flutter
- node.js搭模板流程.Node.js
- 前端專案開發流程思考前端
- springboot專案打war包流程Spring Boot
- Python常見專案部署流程Python
- Vue專案上線前的優化以及專案打包上線流程Vue優化
- Node.js專案拆包工程化Node.js
- 使用 node.js 釋出部署 vue 專案Node.jsVue
- 如何在 Node.js 專案中使用 MQTTNode.jsMQQT
- JB的測試之旅-專案流程規範
- 重構Vue專案的通用處理流程Vue
- 一個專案完整的管理流程有哪些
- 專案管理基本流程介紹,讓你輕鬆管理專案專案管理
- 專案資源管理流程例項
- xflow流程視覺化-專案搭建視覺化
- 專案流程管理:OmniPlan Pro 4 MacMac
- 測試在專案流程中的那些事兒
- 專案資源管理流程:五步專業指南
- 一個BPMN流程示例帶你認識專案中流程的生命週期
- 好用的專案流程管理工具OmniPlan Pro 4
- Django框架簡介和建立django專案的基本流程Django框架