2012-12-13 34 views

回答

5

有沒有一種方法可以知道。您可以發佈一些代碼並查看它的外觀。

關鍵是你不能用來自外部的污染數據來構建你的SQL語句。

如果你建立這樣

sql = "select * from whatever where id = " + id_parameter 

,那麼你正在構建與外界數據的SQL語句的聲明,那是很危險的。

您必須使用參數化查詢,像這樣:

objCmd.CommandType = adCmdText; 
objCmd.CommandText = "UPDATE members SET photo = ? WHERE memberID = ?"; 
objCmd.Parameters.Append(
    objCmd.CreateParameter("filename", adVarChar, adParamInput, 510, fileName)); 
objCmd.Parameters.Append(
    objCmd.CreateParameter("memberID", adInteger, adParamInput, 4, memberid)); 
objCmd.Execute(adExecuteNoRecords); 

注意,objCmd.CommandText沒有來自外部使用的任何數據。外部數據通過CreateParameter調用進行傳送。

0

一個簡單的方法來修補你的代碼的SQL注入自由是使用功能的目標類()上編號:

if (request("id")<>"") then id=Cint(id) 

或字符串:

if (request("str")<>"") then 
str=Replace(request("str"),"'","''") 
str=Replace(request("str"),"%","") 
end if 

希望這有助於

相關問題