Web安全測試知多少 軟件測試
1. 數據驗證流程:一個(gè)好的web系統應該在IE端,server端,DB端都應該進(jìn)行驗證。但有不少程序偷工減料,script驗證完了,就不管了;app server對數據長(cháng)度和類(lèi)型的驗證與db server的不一樣,這些都會(huì )引發(fā)問(wèn)題。有興趣的可參看一下script代碼,設計一些case,這可是你作為一個(gè)高級測試人員的優(yōu)秀之處哦。我曾修改了頁(yè)面端的script代碼,然后提交了一個(gè)form,引發(fā)了一個(gè)系統的重大漏洞后門(mén)
2. 數據驗證類(lèi)型: 如果web server端提交sql語(yǔ)句時(shí),不對提交的sql語(yǔ)句驗證,那么一個(gè)黑客就可暗喜了。他可將提交的sql語(yǔ)句分割,后面加一個(gè)delete all或drop database的之類(lèi)語(yǔ)句,能將你的數據庫內容刪個(gè)精光!我這一招還沒(méi)實(shí)驗在internet網(wǎng)站上,不知這樣的網(wǎng)站有沒(méi)有,有多少個(gè)。反正我負責的那個(gè)web系統曾經(jīng)發(fā)現這樣的問(wèn)題。
3. 網(wǎng)絡(luò )加密,數據庫加密不用說(shuō)了吧。
WEB軟件最常碰到的BUG為:
1、SQL INJETION
2、對文件操作相關(guān)的模塊的漏洞
3、COOKIES的欺騙
4、本地提交的漏洞
●SQL INJETION的測試方法
原理:
如有一新聞管理系統用文件news.asp再用參數讀取數據庫里的新聞譬如
http://www.xxx.com/news.asp?id=1這一類(lèi)網(wǎng)站程序
如果直接用
rs.open "select * from news where id=" &
cstr(request("id")),conn,1,1
數據庫進(jìn)行查詢(xún)的話(huà)即上面的URL所讀取的文章是這樣讀取的
select * from news where id=1
懂得SQL語(yǔ)言的就知道這條語(yǔ)言的意思是在news讀取id為1的文章內容。
但是在SQL SERVER里select是支持子查詢(xún)和多句執行的。如果這樣提交URL的話(huà)
http://www.xxx.com/news.asp?id=1and 1=(select count(*) from admin
where left(name,1)=a)
SQL語(yǔ)句就變成了
select * news where id=1 and 1=(select count(*)
from admin where left(name,1)=a)
意思是admin表里如果存在字段字為name里左邊第一個(gè)字符是a的就查詢(xún)news表里id為1的內容,news表里id為1是有內容的,從邏輯上的角度來(lái)說(shuō)就是1&P。只要P為真,表達式就為真,頁(yè)面會(huì )返回一個(gè)正確的頁(yè)面。如果為假頁(yè)面就會(huì )報錯或者會(huì )提示該id的文章不存在。黑客利用這點(diǎn)就可以慢慢得試用后臺管理員的用戶(hù)和密碼。
測試:
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/