網站開發中的安全檢查(Penetration Test)
一般稍微大一點規模的網站上線前都要做一下安全性測試。(Penetration Test)
安全測試一般包括以下幾個步驟:
1.選擇一系列安全問題點,分析測試的可行性.(選擇幾個需要進行測試的問題,例如SQL注入)
2.定位系統缺陷,并在其中找出高風險性的部分.(一般使用自動化工具)
3.定位那些可能存在的, 難以被自動化測試工具測試出來的缺陷.
4.評估缺點對潛在業務和操作的影響.
5.測試現有系統防御能力,應對和處理攻擊數據的能力.
6.提供用于改進享有系統安全性的建議
一般常見的問題如下:(包括但不僅限于)
1.SQL 注入。
2.XSS 和 CSRF。
3.Cookies,Session劫持和偽造。
4.不必要的權限和信息泄露。
5.偽造數據和授權問題
6.環境和代碼安全性 (服務器配置,混淆,加殼等)
問題原因往往是:
1.架構設計的缺陷或者未充分考慮安全性
2.代碼BUG
3.不完整的測試,代碼覆蓋率不夠高(當然較高的代碼測試覆蓋率意味者較高的成本,一般指關于邏輯和數據的測試)
4.未及時移除測試性代碼和將DEBUG的信息發布到生產環境
5.服務器設置,特別是權限
6.某些人員惡意修改
一般分為自動化和人工兩個部分
自動化一般是使用自己或者第三方開發的工具:
第三方工具推薦: IBM AppScan http://www-01.ibm.com/software/awdtools/appscan/ 非常貴但是非常好用的End-to-End測試工具
還有一些免費的測試工具,例如nikto和skipfish 不過免費的...確實不是什么好貨色....
這些自動化工具同時一般也包含服務器掃描,斷鏈,拼寫檢查等功能
人工測試主要是以下的策略:
1. CodeReview
- CodeReview其實很大程度上是為了給developer一種壓力,讓developer知道有人會查看他的代碼,從而促使他提供更高質量的產品.
- CodeReview還有其他很多的用途,移除程序中的缺陷是其中比較重要的一個.
2.手動測試
- 一般是選擇幾個關鍵的流程和功能進行測試
有興趣的朋友可以看看這個文檔 Technical Guide to Information Security Testing and Assessment
和這個網頁 http://en.wikipedia.org/wiki/Penetration_test
另外建議項目適當的設置不同的環境 (不僅僅用于保證安全性)
1.Local
2.DEV 用于開發小組的內部測試,一般程序員只能工作于Local和DEV環境
3.QAT 只有QA有權限部署該環境,QA在這個環境工作
4.UAT 用戶將在這個環境進行測試,該環境的搭建和程序集的編譯往往是和開發人員無關的
5.Prod
浙公網安備 33010602011771號