Ⅰ 問一下asp 的 sql注入怎麼辦
查看IIS日誌 就知道問題了
禁止上傳 檢查你的網站現在是否還有木馬文件存在 或者某個文件被人修改留了後門
當然也不排除你網站所在的伺服器設置有問題 被人跨站攻擊
Ⅱ 在ASP中注入SQL 怎麼弄啊 求大大們幫忙告訴下方法
過濾問題。
在代碼中查找對方的哪些字元串沒有過濾。然後到引用頁構造語句進行注入
一般如
http://www.aaaa.com/manage.asp?id=1
這個頁面如果有注入漏洞的話
根據語句和錯誤來分析對方的資料庫,然後猜表或者暴表,列,用戶名和密碼
可以介紹你去看一份資料
SQL注入天書
很經典~
Ⅲ asp sql 注入是怎麼回事
SQL注入是從正常的WWW埠訪問,而且表面看起來跟一般的Web頁面訪問沒什麼區別, 所以目前市面的防火牆都不會對SQL注入發出警報,如果管理員沒查看IIS日誌的習慣,可能被入侵很長時間都不會發覺。
介紹個全的你看下
http://www.secnumen.com/technology/anquanwenzhai.htm
所以用SQL的存儲過程就可避免
Ⅳ ASP網頁的SQL注入入侵是什麼
所謂SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字元串,最終達到欺騙伺服器執行惡意的SQL命令,比如先前的很多影視網站泄露VIP會員密碼大多就是通過WEB表單遞交查詢字元暴出的,這類表單特別容易受到SQL注入式攻擊.
詳細的看
http://www..com/s?wd=%CA%B2%C3%B4%CA%C7sql%D7%A2%C8%EB&rsp=3&oq=SQL%D7%A2%C8%EB%C8%EB%C7%D6&f=1&tn=max2_cb
Ⅳ asp程序存在SQL注入漏洞如何處理
你都知道有SQL注入了,就在傳值那處理好別人提交的數據,把特殊符號過濾掉 我找了一些函數你看看1、SQL注入漏洞可謂是「千里之堤,潰於蟻穴」,這種漏洞在網上極為普遍,通常是由於程序員對注入不了解,或者程序過濾不嚴格,或者某個參數忘記檢查導致。在這里,我給大家一個函數,代替ASP中的Request函數,可以對一切的SQL注入Say NO,函數如下: Function SafeRequest(ParaName,ParaType)
'--- 傳入參數 ---
'ParaName:參數名稱-字元型
'ParaType:參數類型-數字型(1表示以上參數是數字,0表示以上參數為字元) Dim ParaValue
ParaValue=Request(ParaName)
If ParaType=1 then
If not isNumeric(ParaValue) then
Response.write "參數" & ParaName & "必須為數字型!"
Response.end
End if
Else
ParaValue=replace(ParaValue,"'","''")
End if
SafeRequest=ParaValue
End function 2、幾年時間,當年的伙計已經成為一個國內知名黑客組織的站長,在他的程序有也有些放黑的代碼,貼出來給朋友們提提供個方便<%
rem 檢查sql字元串中是否有單引號,有則進行轉化
function CheckStr(str)
dim tstr,l,i,ch
l=len(str)
for i=1 to l
ch=mid(str,i,1)
if ch="'" then
tstr=tstr+"'"
end if
tstr=tstr+ch
next
CheckStr=tstr
end function
%><%
''--------定義部份------------------
Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr
''自定義需要過濾的字串,用 "防" 分隔
Fy_In = "''防;防and防exec防insert防select防delete防update防count防*防%防chr防mid防master防truncate防char防declare防<防>防=防|防-防_"
Fy_Inf = split(Fy_In,"防")
If Request.Form<>"" Then
For Each Fy_Post In Request.FormFor Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.Form(Fy_Post)),Fy_Inf(Fy_Xh))<>0 Then
Response.Write "<Script Language=JavaScript>alert('網長友情提示黑客大俠↓\n\n請不要在參數中包含非法字元嘗試注入攻擊本站,本站做起來很不容易的.俺是菜鳥,好怕怕,放俺一馬吧\n\nQQ:6407443\n\n有話好話,請用QQ和俺聯系');</Script>"Response.Write "非法操作!本站已經給大俠您做了如下記錄↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作時間:"&Now&"<br>"
Response.Write "操作頁面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:POST<br>"
Response.Write "提交參數:"&Fy_Post&"<br>"
Response.Write "提交數據:"&Request.Form(Fy_Post)
Response.End
End If
Next
Next
End If
If Request.QueryString<>"" Then
For Each Fy_Get In Request.QueryString
For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh))<>0 Then
Response.Write "<Script Language=JavaScript>alert('網長友情提示黑客大俠↓\n\n請不要在參數中包含非法字元嘗試注入攻擊本站,本站做起來很不容易的.俺是菜鳥,好怕怕,放俺一馬吧\n\nQQ:6407443\n\n有話好話,請用QQ和俺聯系');</Script>"
Response.Write "非法操作!本站已經給大俠您做了如下記錄↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作時間:"&Now&"<br>"
Response.Write "操作頁面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:GET<br>"
Response.Write "提交參數:"&Fy_Get&"<br>"
Response.Write "提交數據:"&Request.QueryString(Fy_Get)
Response.End
End If
Next
Next
End If
%>
<%
dim conn
dim connstr
on error resume next
'DBQ="+server.mappath("admin/admins_news.mdb")+";
'"driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("db.MDB")
set conn=server.createobject("ADODB.CONNECTION")
connstr="DBQ="+server.mappath("admin/admins_news.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr
%>3、通用的SQL防注入程序一般的http請求不外乎get 和 post,所以只要我們在文件中過濾所有post或者get請求中的參數信息中非法字元即可,所以我們實現http 請求信息過濾就可以判斷是是否受到SQL注入攻擊。
IIS傳遞給asp.dll的get 請求是是以字元串的形式,,當 傳遞給Request.QueryString數據後,asp解析器會分析Request.QueryString的信息,,然後根據"&",分出各個數組內的數據所以get的攔截如下:
首先我們定義請求中不能包含如下字元:
引用:
--------------------------------------------------------------------------------
|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare
--------------------------------------------------------------------------------
各個字元用"|"隔開,,然後我們判斷的得到的Request.QueryString,具體代碼如下 :
引用:
--------------------------------------------------------------------------------
dim sql_injdata
SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = split(SQL_Injdata,"|")
If Request.QueryString<>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language=****>alert('天下電影聯盟SQL通用防注入系統提示↓nn請不要在參數中包含非法字元嘗試注入!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
--------------------------------------------------------------------------------
這樣我們就實現了get請求的注入的攔截,但是我們還要過濾post請求,所以我們還得繼續考慮request.form,這個也是以數組形式存在的,我們只需要再進一次循環判斷即可。代碼如下:
引用:
--------------------------------------------------------------------------------
If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language=****>alert('天下電影聯盟SQL通用防注入系統提示↓nn請不要在參數中包含非法字元嘗試注入!</Script>"
Response.end
end if
next
next
end if 4、以下代碼是網上流行的楓葉防SQL注入通用版的代碼,我在原來的基本上去掉一些內容,使之簡單化.以代碼拷進記事本,另存為asp文件。然後在資料庫連接文件那裡加上包含代碼就行了,例如:
<!-- #include file="文件名" -->
以下是代碼
<%
\'--------定義部份------------------
Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr
\'自定義需要過濾的字串,用 "楓" 分隔
Fy_In = "\'楓;楓and楓exec楓insert楓select楓delete楓update楓count楓*楓%楓chr楓mid楓master楓truncate楓char楓declare"
\'----------------------------------
%>
<%
Fy_Inf = split(Fy_In,"楓")
\'--------POST部份------------------
If Request.Form<>"" Then
For Each Fy_Post In Request.Form
For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.Form(Fy_Post)),Fy_Inf(Fy_Xh))<>0 Then
Response.write"非法入侵"
Response.End
End If
Next
Next
End If
\'----------------------------------
\'--------GET部份-------------------
If Request.QueryString<>"" Then
For Each Fy_Get In Request.QueryString
For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh))<>0 Then
Response.write"非法入侵"
Response.End
End If
Next
Next
End If
%>
\'----------代碼結束-------------
以上代碼重點在
Response.write"非法入侵"
你可以修改成通用的:
Response.write"處理url地址有錯誤,請與管理員聯系"
也就是有人想入侵,就會提示"處理url地址有錯誤,請與管理員聯系"
Ⅵ 在asp中加入了防止sql注入代碼 如何輸入符號
這個很簡單啊,你提交表單的時候一般都是登陸了系統的,這樣的話,一般的系統都是通過session來驗證用戶登陸信息的,你可以在最前面加上:
<%
If
session("username")<>"admin"
then
..........'你的SQL注入代碼
End
if
%>
以上的代碼意思是,如果用戶信息不是admin(一般admin是管理員的賬戶,根據你網站的情況具體修改即可)就執行SQL注入檢測。當然你用的SESSION名字可能不一樣,比如:session("master")或session("user")之類的,根據具體情況修改即可,有問題可以網路HI我!
Ⅶ asp+sql 如何有效的防止sql注入
SQL注入,一般由 request 提交而來,所以過濾 request參數即可。
比如,正常獲取 id 為 request("id") ,獲取後,對其進行強制轉為int型,如
id = cint(request.querystring("id"))
同理,凡是數字型的,一律進行判斷是否數字或強制轉換。
如果是字元型的,要寫入SQL語句的,一律對單引號進行轉義,如
SQLserver和Access中,替換成兩個單引號。MYSQL中替換成 \' 等。
可以寫成一個固定的函數來代替request,可以達到防止注入的目的。
網上也有一些通用的過濾程序,可以解決大部分問題,但更多的時候,也並不能防止注入的發生,同時,也會給正常提交帶來一些麻煩。
Ⅷ 舉例說明在asp環境下,實現sql注入的一般過程謝謝···
譬如你有一條SQL查詢是
SELECT * FROM 用戶表 WHERE usename = '用戶名' and password = '密碼'
如果要注入,只需要令usernusename = '用戶名' or 1 = 1',密碼我隨意給
這樣,注入後的SQL就變成為
SELECT * FROM 用戶表 WHERE usename = '用戶名' OR 1 = 1 and password = '密碼'
也可以令usename = '用戶名' '--'
--在sql裡面是注釋用的,所以sql變為
SELECT * FROM 用戶表 WHERE usename = '用戶名' -- and password = '密碼'
跳過你的密碼驗證了哦。。
Ⅸ ASP中的SQL注入求解。
StopInjection 是一個自定義的函數~
你自己仔細看看: Function StopInjection(Values) 這一行不就是定義了這個函數嗎?
就算每行都給你加上注釋~你現在的技術基本也無法理解~~開始先從基礎的練習練習吧~~
還有: 正則表達式不止過濾特殊字元~還有其他的
比如SQL關鍵字 之類的~自己先學學吧~
Ⅹ asp網頁製作中怎樣防止sql注入
把下面的代碼存成一個文件,需要防注入的地方就包含進來這個文件。
<%
'==========================='
'SQL通用防注入模塊
'==========================='
'On Error Resume Next
MV_NoSqlHack_AllStr="'|;|*|and|chr(|select|update|insert|delete|count|inner|join|truncate|declare|rem|declare|exec|dbcc|alter|drop|create|backup|if|else|end|or|set|open|close|use|begin|retun|as|go|exists|delete from|mid(|master|script."
MV_NoSqlHack_ComeUrlGet = Request.QueryString
MV_NoSqlHack_ComeUrlPost = Request.Form
MV_NoSqlHack_Str = Split(MV_NoSqlHack_AllStr,"|")
'Post
If MV_NoSqlHack_ComeUrlPost<>"" Then
For Each MV_NoSqlHack_Post In Request.Form
For MV_NoSqlHack_i = 0 To Ubound(MV_NoSqlHack_Str)
If Instr(LCase(Request.Form(MV_NoSqlHack_Post)),MV_NoSqlHack_Str(MV_NoSqlHack_i))<>0 Then
Response.Write "<script language=javascript>alert('您提交的內容有非法字元。');history.go(-1);</script>"
Response.End
End If
Next
Next
End If
'Get
If MV_NoSqlHack_ComeUrlGet<>"" Then
For Each MV_NoSqlHack_Get In Request.QueryString
For MV_NoSqlHack_i = 0 To Ubound(MV_NoSqlHack_Str)
If Instr(LCase(Request.QueryString(MV_NoSqlHack_Get)),MV_NoSqlHack_Str(MV_NoSqlHack_i))<>0 Then
Response.Write "<script language=javascript>alert('您提交的內容有非法字元。');history.go(-1);</script>"
Response.End
End If
Next
Next
End If
%>