安全性測試
? 認證與授權(quán)
? Session和cookie
? 文件上傳漏洞
? SQL 注入
? XSS 跨站攻擊
? DDoS拒絕服務(wù)攻擊
-認證和授權(quán)
? 認證的目的是為了認出用戶是誰,而授權(quán)的目的是為了決定用戶能夠做什么。
? 認證:Authentication (who am I ?)
? 認證實際上就是一個驗證憑證的過程。
? 多因素認證的強度要高于單因素的認證,但是在用戶體驗上,多因素認證或多或少會帶來一些不方便的地方。
? 密碼策略:長度、復(fù)雜度,要經(jīng)過不可逆的加密后保存在數(shù)據(jù)庫中。
? 多因素認證:支付寶
? 登錄失敗的錯誤提示消息不應(yīng)該明確告知是用戶名不存在還是密碼錯誤,避免客戶端使用暴力破解方式。
? 必須要登錄成功后才能訪問的頁面中都需要用Session 對客戶端進行驗證,確認當(dāng)前Session 已經(jīng)登錄過,否則訪問該頁面時應(yīng)該自動跳轉(zhuǎn)到登錄頁面。避免客戶端直接在URL 地址欄輸入某個地址進行訪問,繞開登錄驗證。
? 登錄失敗后的限制策略,比如連接5 次登錄失敗,應(yīng)該暫停用戶登錄,并將該信息發(fā)送給系統(tǒng)管理員,并告知客戶端的IP 地址。
? 登錄時應(yīng)該使用圖片驗證碼,包括后續(xù)的一些表單提交的動作,都要使用圖片驗證碼。避免使用工具發(fā)送數(shù)據(jù)包,目前圖片驗證碼是被證明最可靠的防攻擊手段之一。
? 授權(quán):Authorization (what can I do?)
? 某個主體對某個對象需要實施某種操作,而系統(tǒng)對這種操作的限制就是權(quán)限控制。
? 用戶只能訪問被授權(quán)的模塊和功能。
? 用戶不能通過直接輸入URL 地址的方式進行越權(quán)訪問。
? 權(quán)限的控制只能由系統(tǒng)管理員來維護,其它用戶不能做任何修改。
? 權(quán)限控制要細,最好細到增刪查改這種功能上,并且不同模塊有不同的權(quán)限。

-Session和Cookie
? 對客戶端生成Session ID 時最好與IP 地址進行綁定,避免非法客戶端獲取到別人的Session ID 后來冒充合法用戶。
? Cookie 的信息由于是保存在客戶端,是公開的,所以對于關(guān)鍵信息需要加密處理。
? Cookie 的作用域需要定義清楚,不能一味的全部定義成 / ,這樣很有可能站點虛擬目錄之間的Cookie 信息互相影響,產(chǎn)生沖突。除非我們的站點只有一個虛擬目錄。
? 一些重要的具有控制功能的數(shù)據(jù)不能保存在Cookie 當(dāng)中,而必須將它保存在Session 中,避免人為地篡改Cookie 非法獲取到系統(tǒng)控制權(quán)。
-Session測試
? Session 不能過度使用,會加重服務(wù)器維護Session 的負擔(dān)。
? Session 的過期時間設(shè)置是否合理。
? Session 過期后是否客戶端是否生成新的SessionID。
-文件上傳漏洞
? 對文件類型進行過濾,比如只能允許上傳圖片或壓縮文件。不能允許用戶上傳可執(zhí)行程序或代碼
? 見案例:訪問secure中的兩個php文件
? apache\bin\php.ini disable_function=phpinfo system
? 不能單純只是以文件的后綴名來進行類型的判斷
? 不能單純只是在客戶端使用Javascript 對文件類型進行判斷,而應(yīng)該在服務(wù)器端進行
? 文件上傳的大小必須有限制
-SQL注入
? 注入攻擊的本質(zhì),是把用戶輸入的數(shù)據(jù)當(dāng)成代碼執(zhí)行。
? 兩個關(guān)鍵條件:
????- 用戶能夠控制輸入
????- 原本程序要執(zhí)行的代碼,拼接了用戶輸入的數(shù)據(jù)。
? 攻擊演示:http://localhost:8008/secure
-SQL注入防治
? 不要信任用戶的輸入。對用戶的輸入進行校驗,可以通過正則表達式,或限制長度;
? 不要使用動態(tài)拼裝SQL,可以使用參數(shù)化的SQL 或者直接使用存儲過程進行數(shù)據(jù)查詢存取。
? 不要使用管理員權(quán)限的數(shù)據(jù)庫連接,為每個應(yīng)用使用單獨的權(quán)限有限的數(shù)據(jù)庫連接。
? 不要把機密信息直接存放,加密敏感信息。
? 應(yīng)用的異常信息應(yīng)該給出盡可能少的提示,最好使用自定義的錯誤信息對原始錯誤信息進行包裝
? 將服務(wù)器設(shè)置修改為支持自動將單引號和雙引號進行轉(zhuǎn)義。
? SQL 注入的檢測方法一般采取輔助軟件或網(wǎng)站平臺來檢測,軟件一般采用SQL 注入檢測工具如IBM 的AppScan 等。
-DDoS拒絕服務(wù)攻擊
? DDos攻擊原理就是模擬真實用戶來使用系統(tǒng),但是模擬的量是非常大的,這樣通過利用大量合理的請求造成資源過載,導(dǎo)致服務(wù)不可用,從而導(dǎo)致系統(tǒng)無法為真正用戶提供服務(wù)。
? DDoS攻擊,基本原理均是基于網(wǎng)絡(luò)協(xié)議來進行的。