安全性測試主要是測試系統在沒有授權的內部或者外部用戶對系統進行攻擊或者惡意破壞時如何進行處理,是否仍能保證數據和頁面的安全。測試人員可以學習一些黑客技術,來對系統進行攻擊。另外,對操作權限的測試也包含在安全性測試中。具體測試內容如下:
執行添加、刪除、修改等動作中是否做過登錄檢測。
退出系統之后的操作是否可以完成。
所有插入表單操作中輸入特殊字符是否可以正常輸正常存儲,特殊字符為:!?#¥%……—*()~——-+=[]{}、|;:‘”?/《》<>,。
在帶有參數的回顯數據的動作中更改參數,把參數改為特殊字符并加入操作語句看是否出錯。
測試表單中有沒有做標簽檢測,標簽檢測是否完整。
在插入表單中加入特殊的HTML代碼,例如:<marquee>表單中的字本是否移動?</marquee>。
系統安全性測試的十個重要問題
1:沒有被驗證的輸入
測試方法:
數據類型(字符串,整型,實數,等)
允許的字符集
最小和最大的長度
是否允許空輸入
參數是否是必須的
重復是否允許
數值范圍
特定的值(枚舉型)
特定的模式(正則表達式)
2:有問題的訪問控制
測試方法:主要用于需要驗證用戶身份以及權限的頁面,復制該頁面的url地址,關閉該頁面以后,查看是否可以直接進入該復制好的地址;
例:從一個頁面鏈到另一個頁面的間隙可以看到URL地址,直接輸入該地址,可以看到自己沒有權限的頁面信息;
3:錯誤的認證和會話管理
分析:帳號列表:系統不應該允許用戶瀏覽到網站所有的帳號,如果必須要一個用戶列表,推薦使用某種形式的假名(屏幕名)來指向實際的帳號。
瀏覽器緩存:認證和會話數據作為GET的一部分來發送
認證和會話數據不應該作為GET的一部分來發送,應該使用POST,
例:對Grid、Label、Tree view類的輸入框未作驗證,輸入的內容會按照html語法解析出來;
4:跨站腳本(XSS)
分析:攻擊者使用跨站腳本來發送惡意代碼給沒有發覺的用戶,竊取他機器上的任意資料;
測試方法:
?HTML標簽:<…>…</…>
?轉義字符:&(&);<(<);>(>); (空格) ;
?腳本語言:<script language=‘javascript’>Alert(‘’)</scrīpt>
?特殊字符:‘ ’ < > /
?最小和最大的長度
?是否允許空輸入
例:對Grid、Label、Tree view類的輸入框未作驗證,輸入的內容會按照html語法解析出來
5:緩沖區溢出
沒有加密關鍵數據
分析:用戶使用緩沖區溢出來破壞web應用程序的棧,通過發送特別編寫的代碼到web程序中,攻擊者可以讓web應用程序來執行任意代碼。
例:view-source:http地址可以查看源代碼
在頁面輸入密碼,頁面顯示的是 *****, 右鍵,查看源文件就可以看見剛才輸入的密碼;
6:注入式漏洞
分析:用戶登錄處、不用登錄可以查看到的數據庫中的數據列表尤為重要。
例:一個驗證用戶登陸的頁面,如果使用的sql語句為:
Select * from table A where username=’’ + username+’’ and pass word ….
Sql 輸入‘ or 1=1 ―― 就可以不輸入任何password進行攻擊;
7:不恰當的異常處理
分析:程序在拋出異常的時候給出了比較詳細的內部錯誤信息,暴露了不應該顯示的執行細節,網站存在潛在漏洞;
8:不安全的存儲
沒有加密關鍵數據
分析:帳號列表:系統不應該允許用戶瀏覽到網站所有的帳號,如果必須要一個用戶列表,推薦使用某種形式的假名(屏幕名)來指向實際的帳號。
瀏覽器緩存:認證和會話數據不應該作為GET的一部分來發送,應該使用POST;例:view-source:http地址可以查看源代碼
在頁面輸入密碼,頁面不顯示 “*****”;
在頁面輸入密碼,頁面顯示的是 *****,
數據庫中存的密碼沒有經過加密;
地址欄中可以看到剛才填寫的密碼;
右鍵查看源文件就可以看見剛才輸入的密碼;
9:拒絕服務
分析:Config中的鏈接字符串以及用戶信息,郵件,數據存儲信息都需要加以保護。攻擊者可以從一個主機產生足夠多的流量來耗盡狠多應用程序,最終使程序陷入癱瘓。需要做負載均衡來對付。
10:不安全的配置管理
分析:Config中的鏈接字符串以及用戶信息,郵件,數據存儲信息都需要加以保護程序員應該作的:配置所有的安全機制,關掉所有不使用的服務,設置角色權限帳號,使用日志和警報。
例:數據庫的帳號是不是默認為“sa”,密碼(還有端口號)是不是直接寫在配置文件里而沒有進行加密。
軟件安全測試涉及的方面
1. 用戶名和密碼
是否設置密碼最小長度
用戶名和密碼中是否可以有空格或回車?
是否允許密碼和用戶名一致
防惡意注冊:可否用自動填表工具自動注冊用戶?
遺忘密碼處理
有無缺省的超級用戶?
有無超級密碼?
是否有校驗碼?
密碼錯誤次數有無限制?
直接輸入需要權限的網頁地址可以訪問?
如:沒有登錄或注銷登錄后,直接輸入登錄后才能查看的頁面的網址,能直接打開頁面;注銷后,點瀏覽器上的后退,可以進行操作。
正常登錄后,直接輸入自己沒有權限查看的頁面的網址,可以打開頁面。
2.隱藏域與CGI參數
分析:有此隱藏域中泄露了重要的信息,有時還可以暴露程序原代碼。直接修改CGI參數,就能繞過客戶端的驗證了。
如:<input type="hidden" name="h" value="http://XXX/checkout.php">
只要改變value的值就可能會把程序的原代碼顯示出來。
3.上傳文件沒有限制
分析:上傳文件最好要有格式的限制; 上傳文件還要有大小的限制。
4.把數據驗證寄希望于客戶端的驗證
分析:客戶端是不安全,重要的運算和算法不要在客戶端運行。重要的數據(如:密碼)在客戶端應該加密。
例:保存網頁并對網頁進行修改,使其繞過客戶端的驗證。(如只能選擇的下拉框,對輸入數據有特殊要求的文本框)
5.傳輸中的密碼沒有加密
分析:傳輸中的密碼要進行加密。傳輸前加密用SSL加密,https的方式提交用戶名和密碼;如果使用tomcat做服務器的話,SSL加密只需配置就可以了:
6.Web應用系統的安全性測試區域主要有:
(1)現在的Web應用系統基本采用先注冊,后登陸的方式。因此,必須測試有效和無效的用戶名和密碼,要注意到是否大小寫敏感,可以試多少次的限制,是否可以不登陸而直接瀏覽某個頁面等。
(2)Web應用系統是否有超時的限制,也就是說,用戶登陸后在一定時間內(例如15分鐘)沒有點擊任何頁面,是否需要重新登陸才能正常使用。
(3)為了保證Web應用系統的安全性,日志文件是至關重要的。需要測試相關信息是否寫進了日志文件、是否可追蹤。
(4)當使用了安全套接字時,還要測試加密是否正確,檢查信息的完整性。
(5)服務器端的腳本常常構成安全漏洞,這些漏洞又常常被黑客利用。所以,還要測試沒有經過授權,就不能在服務器端放置和編輯腳本的問題。
我們覺得樓上的象是測試論壇或者需要登陸的網站呢
我就順著加幾條吧:
1。登陸系統,點擊退出系統,或者注銷,然后點擊IE的退出,看看能否再次登陸,這個對于安全也比較需要,主要測試的是退出系統后,對cok0kies
2。如果你的系統,客戶端比較多,那么就要判斷一個用戶能否同時在不同的機器上登陸
3。使用了加密的軟件,WEB系統運行后,加密軟件異常,包括關閉,退出,此時你的WEb系統安全怎么處理