1.網頁安全漏洞檢測
一些設計不當的網站系統可能包含很多可以被利用的安全漏洞,這些安全漏洞如同給遠程攻擊者開了一個后門,讓攻擊者可以方便地進行某些惡意的攻擊。例如,公共漏洞和披露網站CVE(Common Vulnerabilities and Exposures)公布了Element InstantShop中的Web網頁add_2_basket.asp的一個漏洞項,允許遠程攻擊者通過隱藏的表單變量“price”來修改價格信息。這個表單的形式如下所示:
<INPUT TYPE = HIDDEN NAME = "id" VALUE = "AUTO0034">
<INPUT TYPE = HIDDEN NAME = "product" VALUE = "BMW545">
<INPUT TYPE = HIDDEN NAME = "name" VALUE = "Expensive Car">
<INPUT TYPE = HIDDEN NAME = "price" VALUE = "100">
利用這個漏洞,不懷好意者可以任意設定price字段的值,然后提交給InstantShop網站的后臺服務器,從而可能用100美元就可以獲得一部BMW545。
技巧:發現類似的安全漏洞的最好方法是進行代碼審查。除了代碼審查,測試人員還可以利用一些測試工具進行檢查,例如:Paessler Site Inspector、Web Developer等。
2.SQL注入
SQL注入是另外一個經常忽略的安全漏洞,但是SQL注入同時也是一種非常普遍的代碼漏洞,它會導致數據庫端的敏感數據泄漏,或者服務器受到黑客的控制。例如,下面的一段代碼就存在SQL語句的注入漏洞。
SqlConnection sqlcon = sqlconnA;
//打開連接
sqlcon.Open();
//組合一條查詢語句
SqlCommand cmd = "select count(*) from User where LogonName = ‘" + this.textBox1.Text +”’ and Password = ‘”+this.textBox2.Text;
SqlDataAdapter adpt = new SqlDataAdapter(cmd, sqlcon);
DataSet ds = new DataSet();
adpt.Fill(ds);
//關閉連接
sqlcon.Close();
//如果返回數據不為空,則驗證通過
If(ds.Tables[0].Rows.Count>0)
{
retuen true;
}
else
{
Return false;
}
這段代碼從textBox1獲得用戶輸入的用戶名,從textBox2獲得用戶輸入的密碼,然后執行數據庫查詢操作。假設在textBox1的輸入框輸入一個已知的用戶名,然后再做一些手腳,則可以不輸入密碼也能登錄系統。這個字符串利用了SQL Server對單引號的處理方式,只要簡單地組合成類似下面的字符串并輸入到textBox1的輸入框中即可。
文章來源于領測軟件測試網 http://www.kjueaiud.com/