安全性測試
安全性測試:指有關驗證應用程序的安全等級和識別潛在安全性缺陷的過程。
安全性測試的目的:查找軟件自身程序設計中存在的安全隱患,并檢查應用程序對非法入侵的防范能力。
例子:對于一個公司內部使用(只有通過內網才能訪問,互聯網上無法訪問)的B/S結構軟件,這樣的軟件不用過于注重安全性問題。
一些常見的軟件安全問題有:
- 緩沖區溢出
- 格式化字符串攻擊
- 整數溢出
- SQL注入
- 命令注入
- 跨站腳本攻擊
- 函數錯誤返回值、異常未被處理
- 網絡數據截獲
- MagicURL隱藏的表單字段攻擊
- SSL、TLS協議攻擊
- 脆弱的登錄口令
- 存儲中的訪問控制攻擊
- 系統和應用程序的信息泄露
- 非法文件訪問
- 域名服務解析攻擊
- 競爭條件攻擊
- 未認證的密鑰交換
- 密碼學隨機數破解
安全測試常用的靜態檢測工具有:
- Fortify(微軟)
- Rough Auditing Tool for Security
- BEAM
- SLAM
- Flaw Finder
- Prexis
- Coverity
安全性測試的主要方法有:
靜態的代碼安全測試:通過對源代碼進行安全掃描
動態的滲透測試:模擬黑客輸入,對應用系統進行攻擊性測試
程序數據掃描:通常是進行內存測試
正向測試過程(以測試空間為依據尋找缺陷和漏洞)和反向測試過程(以已知的缺陷空間為依據去尋找軟件中是否會發生同樣的缺陷和漏洞)
1、什么是跨站腳本(XSS)攻擊?
解答:指web應用程序從惡意用戶處得到輸入,不需要進行驗證就直接回顯。如果這種回顯由惡意的可被瀏覽器解析腳本代碼生成,一旦受害瀏覽器單擊了包含回顯的鏈接,則受害瀏覽器將會執行這些惡意代碼,從而受到攻擊。
例子1:在網頁上,在任意輸入文本域輸入:
<script>alert("hello");</script>
單擊“提交”按鈕,若彈出對話框“hello”,則說明存在XSS缺陷。
例子2:在網頁上,在任意輸入文本域輸入:
<iframe src=http://www.goole.cn width=100 height=100></iframe>
單擊“提交”按鈕,若彈出谷歌部分頁面,則說明存在XSS缺陷。
2、什么是SQL注入?
解答:SQL注入屬于命令注入,指發生在應用程序與數據庫層的安全漏洞。
簡而言之,是在輸入的數據字符串之中夾帶SQL指令,被數據服務器誤認為是正常的SQL指令而運行導致破壞。另外,SQL還有一個變種針對存儲過程的,存儲過程接收一個參數,若不檢查執行這個參數進行字符串連接,執行連接結果,就可能會出現安全性問題。
例子:假設某網站登錄驗證的SQL查詢代碼為:SELECT *FROM users WHERE(name='''+userName+''') and (pw='''+passWord+''');
若在用戶名文本框輸入: 'OR'1'='1
在密碼文本框輸入: 'OR'1'='1
此時導致原本的SQL字符串被輸入為:SELECT *FROM users WHERE(name= ''OR'1'='1') and (pw=''OR'1'='1');
也就是說實際上運行的SQL命令會變成:SELECT *FROM users;
此時,惡意用戶雖然沒有賬號密碼,亦可以成功登錄網站。
3、在你所測試的這個B-S結構軟件中,你們在用戶登錄頁面有哪些安全措施?
解答:
(1)對用戶名和密碼進行加密,在網上傳輸時不是明文
(2)對登錄時調用的SQL語句做了處理,防止SQL注入
(3)要防止URL的SQL注入
(4)用戶名和密碼的輸入文本框都限制了輸入長度,防止緩沖區溢出
(5)如果URL輸入錯誤如在后面加個單引號,則錯誤提示信息中不包含源代碼內容等安全信息
(6)處理了代碼,防止XSS攻擊
(7)強制用戶不能使用弱口令,例如長度要求在6-15位之間
(8)當用戶輸錯密碼達到5次,該賬戶將被鎖定
(9)由于該系統中用戶名是電子郵件格式,所以要求輸入必須符合國際規范,如RFC822
(10)在“忘記密碼”處理頁面中也要防止SQL注入和XSS攻擊
(11)在“忘記密碼”的所有輸入文本框中都限制輸入長度,防止緩沖區溢出
(12)在“忘記密碼”處理頁面中的URL輸入錯誤如在后面加個單引號,則錯誤提示信息中不包含源代碼內容等安全信息
(13)如果沒有成功登錄,則即使用戶輸入此軟件其他頁面的URL,也會被重定向到登錄頁面
(14)要注意重定向問題(若客戶端發送不加檢查的當做redirect的參數,則很有可能會出現問題)
4、什么是Cookie欺騙?
解答:指一些網站服務器存在用戶計算機上的一個文本文件,為了辨別用戶身份而存儲在用戶本地終端上(數據通常經過加密),它與服務器有一定的交互性,常存儲用戶名和網站登錄密碼。
由于cookie是保存在客戶端瀏覽器中,對通信協議無影響,攻擊者可能通過偽造cookie信息,繞過網站程序的驗證,也不需要輸入密碼,以任意用戶的身份登錄網站。
進行cookie欺騙的有多種途徑:
- 跳過瀏覽器嗎,直接對通信數據進行改寫
- 修改瀏覽器,讓瀏覽器從本地可以讀寫任意域名cookie
- 使用簽名腳本,讓瀏覽器從本地可以讀寫任意域名cookie
- 欺騙瀏覽器,讓瀏覽器獲得假的域名
5、什么是網絡釣魚?
解答:是一種企圖從電子通信中,通過偽裝成信譽卓著的法人媒體以獲得如用戶名、密碼和信用卡明細登個人敏感信息的犯罪詐騙過程。
網絡釣魚通常是通過電子郵件或即時通信進行。它常常引導用戶到URL與接口外觀與真正網站幾無二致的假冒網站輸入個人數據,即使使用加密的SSL服務器認證,要想偵測網站是否仿冒實際上扔很困難。
網絡釣魚技術主要有:
- 鏈接操控
- 過濾器規避
- 網站偽造。
6、可編輯的標簽、文本輸入框,安全性角度考慮測試點?
解答:
- 輸入 <b>hello</b> ,設置完成后,應該顯示原文,而不是粗體hello;
- 輸入Document.write('hello'),設置完成后不會跳出來一個對話框;
- 是否支持右鍵、快捷鍵如Ctrl+C,Ctrl+V,Ctrl+A(全選),Ctrl+X.

浙公網安備 33010602011771號