當前位置:
首頁 > 新聞 > Web開發者安全速查表

Web開發者安全速查表


想要開發出一個安全的、健壯的Web應用其實是非常困難的,如果你覺得這實現起來非常簡單的話,那麼你一定是一個X炸天的程序猿,要麼你就是在白日做夢……



寫在前面的話


如果你覺得你可以在一個月之內開發出一款集使用價值、用戶體驗度、以及安全性為一身的產品,那麼在你將產品原型真正推上市場之前,請一定要三思啊!


當你仔細核查了本文給出的安全小貼士之後,你可能會發現你在產品的開發階段跳過了很多重要的安全步驟。有的時候,也許你應該對你的用戶坦誠一點,你應該誠實地告訴他們這款產品還沒有完全搞定,還有很多的安全問題亟待解決。


下面的這份速查表非常簡潔,而且絕對還有很多東西沒有涉及到。就我個人而言,我從事安全Web應用開發工作已經超過14年了,而本文給出的小貼士都是讓我在過去一段時間裡曾痛苦不堪的重要安全問題。我希望大家可以認真對待,不僅是對用戶負責,也要對自己的職業生涯負責。




資料庫篇


1. 對類似訪問令牌、電子郵箱地址或賬單詳情進行加密處理,尤其是用戶的身份識別信息(密碼)。


2. 如果你的資料庫支持低成本加密,請確保開啟這項功能並保護主機磁碟中的數據。與此同時,確保所有的備份文件都進行了加密存儲。


3. 按照最小許可權原則給資料庫訪問賬號分配許可權,不要使用資料庫的root賬號。

4. 使用密鑰存儲器來保存或派發密鑰,不要直接將密鑰硬編碼在你的應用之中。


5. 通過使用SQL預處理語句來避免SQL注入攻擊。比如說,如果你使用的是NPM,那麼請不要使用npm-mysql,你應該用的是npm-mysql2,因為它支持SQL預處理語句。

開發篇


1. 確保你軟體中所有組件的每一個版本都進行了漏洞掃描,包括介面、協議、代碼以及數據包。

2. 對產品中所有使用到的第三方工具時刻保持警惕性,選擇一款安全係數較高的開發平台。

身份驗證篇


1. 使用合適的加密演算法(例如bcrypt)來計算並存儲密碼哈希,在初始加密時選擇合適的隨機數據,還有就是千萬不要自己去寫一個加密演算法。


2. 使用簡單但健壯的密碼規則,以鼓勵用戶設置長度足夠安全的隨機密碼。

3. 在服務的登錄機制中引入多因素身份驗證功能。

DoS保護篇


1. 確保那些針對API的DoS攻擊不會嚴重影響你網站的正常運行,至少要限制API的請求訪問速率。


2. 對用戶所提交的數據和請求進行結構和大小的限制。

3. 使用類似CloudFlare這樣的緩存代理服務來為你的Web應用添加DDoS緩解方案。


Web流量篇


1. 使用TLS,不只是你的登錄表單和網站響應數據,而是你的整個網站都應該使用TLS。


2. Cookie必須為httpOnly。


3. 使用CSP(內容安全策略),雖然配置過程比較麻煩,但這覺得是值得的。


4. 在客戶端響應中使用X-Frame-Option和X-XSS-Protection頭。


5. 使用HSTS響應,使用HTTPS。


6. 在所有的表單中使用CSRF令牌。

API 篇


1. 確保你所有的公共API中沒有可以枚舉的資源。


2. 確保用戶在使用你的API之前,對他們的身份進行驗證。

驗證篇


1. 在客戶端對用戶的輸入進行驗證,並即使給予反饋(Ajax),但永遠不要相信用戶輸入的數據。


2. 在伺服器端再對用戶所輸入的每一個字元進行一次徹底的驗證,永遠不要直接將用戶輸入的內容注入到響應數據中,永遠不要直接在SQL語句中插入用戶提供的數據。

雲端配置篇


1. 確保所有的服務只開啟必要的埠,關閉不用的埠,並對常用埠進行強制性的安全保護,因為通過非標準埠來進行攻擊對於攻擊者而言相對來說是比較困難的。


2. 確保伺服器後台資料庫和後台服務無法通過公網查看到。


3. 在單獨的VPC節點配置邏輯服務或提供服務內通信。


4. 確保所有的服務只接受來自有限IP地址的數據。


5. 限制輸出數據的IP地址以及埠。


6. 使用AWS IAM角色,不要使用root憑證。


7. 對所有的管理員和開發人員提供最小的訪問許可權。


8. 定期更換密碼和訪問密鑰。

基礎設施篇


1. 確保可以在主機不下線的情況下進行更新操作,確保部署了全自動化的軟體更新策略。


2. 使用類似Terraform這樣的工具來創建所有的基礎設施,不要使用雲端console(控制台)來進行創建。


3. 對所有服務的日誌進行集中記錄,不要通過SSH來訪問或獲取日誌。


4. 不要讓AWS服務組的埠22保持開啟狀態。


5. 一定要部署入侵檢測系統。

操作篇


1. 關閉不用的服務和伺服器,因為最安全的伺服器是那些關閉著的伺服器。

測試篇


1. 開發完成之後,對你的設計和代碼實現進行多次安全審查。


2. 進行滲透測試,也就是自己黑自己,但你也要讓別人來對你的網站進行滲透測試。

計劃篇

1. 創建一個安全威脅模型,用來描述你可能會遇到的威脅以及攻擊者。


2. 設計一個安全應急響應方案,你總有一天會用到的。





篇尾語


如果你覺得這個清單遺漏了什麼的話,歡迎在文章下方的評論區留言補充,安全社區的壯大需要大家的共同努力。


* 參考來源:simplesecurity, FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM



喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

全球網友來晒圖 | 那些被WannaCry病毒攻擊感染的場景
國產指紋庫平台 – 天蠍指紋庫
挖洞經驗|看我如何挖到了一個價值5K刀的谷歌「404頁面」

TAG:FreeBuf |

您可能感興趣

GitLab發布全球開發者報告,開源仍是主流!
Block.one 宣布開發者門戶開啟 為開發者提供支持
LG宣布部分開源webOS,以激發開發者的興趣
Magic Leap發布入門指南旨在幫助內容開發者
《絕地求生》開發商收購MadGlory,將推出開發者網站
以太坊開發者發布Casper FFG網路更新
Oracle 被指在開源 JMC 後迅速解僱原開發團隊
開發者破解 iOSbeta 發現即將發售 HomePod 秘密新功能
開發者破解 iOS beta 發現即將發售 HomePod 秘密新功能
蘋果開始禁止開發者在 App 設計中使用 emoji 特殊符號
Facebook表示已經有開發者收到Santa Cruz開發機
新MacBook Pro馬上發布!蘋果WWDC開發者大會開幕
提高Web開發速度技巧
蘋果:將開發AppleWatch錶盤第三方開發介面
Oculus發布開發人員快速入門指南
蘋果發布Siri快捷方式測試版,iOS 12開發者提前使用
蘋果iOS 12開發者預覽版beta 6更新發布
Mapbox發布新SDK幫助開發人員開發AR導航應用程序
蘋果iOS beta開發者預覽版推送
Python開發者