web 安全性测试
一、介紹
web安全測試指對相關web程序的安全性服務以及安全方面的缺陷進行識別的過程;
二、測試類型
????????安全性測試主要包括以下幾種:
????????1、認證與授權
????????2、Session 與 Cookie
? ? ? ? 3、DDOS拒絕服務攻擊
????????4、文件上傳漏洞
? ? ? ? 5、XSS跨站攻擊
? ? ? ? 6、SQL注入
? ? ? ? 7、暴力破解
三、認證與授權
????????認證:登錄功能正常 ;
策略:業務上是否需要登陸才能訪問的功能頁面,防止直接用url訪問密碼強度策略要求,如八位以上,字母大小寫,數字特殊字符,三種以上,防止連續數字;輸錯密碼,次數或者時間的限定驗證碼作為身份驗證? ? ? ? 授權:每個用戶擁有被授予的限定的權限
策略:不同身份的用戶有不同的頁面訪問權限或功能操作權限。 沒有權限訪問的url訪問,需要做權限檢查,不能直接允許訪問。 防止多人使用系統管理員的權限,最好只有管理層使用。 系統權限設計越細越好,最好設計到增刪改查層面。四、seeeion和cookie
? ? ? ? 由于HTTP是一種無狀態性的協議,不要求瀏覽器在每次請求中標明他自己的身份,每次發個請求回個響應即可,為了識別用戶身份,服務端生成session 和 cookie分分別保存在服務器和客戶端。如:針對session的攻擊就是跨站請求偽造,攻擊者獲取到sessionid,然后偽裝成正常訪問者;如:Cookie是保存在客戶端的,如果Cookie信息被用戶獲取到,就會被人利用漏洞對系統進行攻擊。
策略服務器生成sessionid時把ip與sessionid綁定,避免被偽冒;cookie保存在客戶端,對cookie中的敏感信息加密保存,避免泄露cookie的作用域做限定,不同應用系統不同作用域;cookie中不保存系統狀態控制的內容,防止被篡改。五、DDOS拒絕服務攻擊
????????DDOS又稱為分布式拒絕服務攻擊,全稱是Distributed Denial os Service。它是利用合理的請求將正常請求放大了若干倍,通過若干網絡節點同時發起攻擊,造成資源過載,導致服務不可用。是一種損人不利己的行為。常見有三:????????
? ? ? ? 肉雞:通過木馬讓大量電腦受遠程控制,執行病毒程序,服務器防火墻無法通過封鎖IP的方式進行處理,唯一的解決辦法就是服務器夠強大。
? ? ? ? 攻擊聯盟:很多人聯合起來對同一個網站發起攻擊,對網站流量形成壓力;請求都是真實的,但是請求量過大導致服務器崩潰。服務器無法通過禁用IP、防火墻來限制,最好的解決方式,增加服務器資源。
????????利用TCP建立連接的原理:TCP建立連接需要經歷三次握手,簡單來說就是:①C-->S ② S-->C ③C-->S ,三次握手成功就會建立TCP連接。根據這個原理,客戶端模擬一個不存在IP地址向服務器發送TCP連接的請求,服務端在向客戶端發起第二次握手時由于找不到IP地址,連接資源一直處于等待狀態。連接數量過大時會導致服務器資源崩潰。
六、文件上傳漏洞
??????????文件上傳本身是web中最為常見的一種功能需求;文件上傳漏洞是指用戶上傳了一個可執行的、非法的腳本文件,如js、php文件;并通過此腳本文件獲得了執行服務器端命令的能力,給系統帶來危害。
????????
策略: 文件上傳的過濾,用戶上傳的文件不可信,對文件類型進行篩選:后綴名過濾、二進制來判斷文件類型 不能只看擴展名,要看文件本身的類型 修改服務器核心參數,禁止腳本引擎運行系統命令; 不要只看前端頁面的限制; 文件上傳的時候我們要對文件的大小進行限制 上傳文件大小大于本地剩余空間大小,是否會出現異常錯誤。 上傳是否成功的判斷。上傳過程中,中斷,程序是否判斷上傳是否成功。 文件名中帶有中文字符,特殊字符等的文件上傳。 上傳漏洞拿shell。<?php system($_GET['cmd']); ?>七、XSS跨站攻擊
????????XSS攻擊全稱跨站腳本攻擊Cross Site Scripting,為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS,XSS是一種在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。
????????如:寫博客提交文本時,寫入<input type="button" value="點擊"?οnclick="alert('你好')"?/>以上一行代碼在輸入框輸入并提交成功后,如果頁面出現一個可點擊按鈕,表示沒有對輸入內容進行過濾,存在安全問題。
? ? ? ? 如:獲取用戶cookie;在代碼修改為下列一行后,用戶點擊后,就直接能獲取到用戶cookie;
<img src="http:XXX.html" οnclick="document.getElementById('kw').value=document.cookie">
八、SQL注入
????????SQL語言作為一種解釋型語言,是由程序員編寫的代碼和用戶提交的數據共同組成的。SQL注入指攻擊者將惡意的字符串或者語句等信息作為參數輸入,服務器在驗證這個字段的時候,讀取攻擊者輸入的數據,將其作為正常的值參與SQL語句的查詢,如果攻擊者輸入了一個字符串,在SQL語句執行之后,可能導致刪除表等操作,對于一個應用來說,影響是很大的。
策略:不相信用戶的輸入,對輸入的內容進行檢驗,利用正則表達式,長度限制等。對于用戶輸入的單引號和雙引號,進行轉義處理。sql語句不動態拼接,利用參數化或存儲過程來做;連接數據庫時,為每一個程序定義一個賬號;數據庫的敏感信息要加密處理????????
九、暴力破解
? ? ? ?指 使用攻擊者自己的用戶名和密碼字典,一個一個去枚舉,嘗試是否能夠登錄。理論上來說,只要字典足夠龐大,枚舉總是能夠成功的!
總結
- 上一篇: 逆光拍摄有心得!华硕鹰眼3让你照片火遍朋
- 下一篇: Java案例----双色球中奖分析