我有一個使用傳統ASP技術的維護網站。 現在,我的客戶詢問這個網站是否從SQL注入獲得保護。我如何知道/檢查我的經典ASP網站是否從SQL注入安全?
我試過微軟的SQL注入源代碼分析器,測試後我沒有收到警告。
是否有任何其他方法來檢查/驗證這些經典的ASP源代碼是否免受SQL注入攻擊?
請指教! 謝謝
我有一個使用傳統ASP技術的維護網站。 現在,我的客戶詢問這個網站是否從SQL注入獲得保護。我如何知道/檢查我的經典ASP網站是否從SQL注入安全?
我試過微軟的SQL注入源代碼分析器,測試後我沒有收到警告。
是否有任何其他方法來檢查/驗證這些經典的ASP源代碼是否免受SQL注入攻擊?
請指教! 謝謝
有沒有一種方法可以知道。您可以發佈一些代碼並查看它的外觀。
關鍵是你不能用來自外部的污染數據來構建你的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調用進行傳送。
一個簡單的方法來修補你的代碼的SQL注入自由是使用功能的目標類()上編號:
if (request("id")<>"") then id=Cint(id)
或字符串:
if (request("str")<>"") then
str=Replace(request("str"),"'","''")
str=Replace(request("str"),"%","")
end if
希望這有助於