防注入代码

[ 2004-09-08 18:42:50 | Author: zhenhua ]
Font Size: Large | Medium | Small
ASP:
作者:Neeao
<%
'--------数据库连接部分--------------
dim dbkillSql,killSqlconn,connkillSql
dbkillSql="Sql.asp"
'On Error Resume Next
Set killSqlconn = Server.CreateObject("ADODB.Connection")
connkillSql="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbkillSql)
killSqlconn.Open connkillSql
If Err Then
 err.Clear
 Set killSqlconn = Nothing
 Response.Write "数据库连接出错,请检查连接字串。"
 Response.End
End If

'--------定义部份------------------
Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr,Kill_IP,WriteSql
'自定义需要过滤的字串,用 "|" 分隔
Fy_In = "'|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
Kill_IP=True
WriteSql=False
'----------------------------------

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
 If WriteSql=True Then
 killSqlconn.Execute("insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values('"&Request.ServerVariables("REMOTE_ADDR")&"','"&Request.ServerVariables("URL")&"','POST','"&Fy_Post&"','"&replace(Request.Form(Fy_Post),"'","''")&"')")
 killSqlconn.close
 Set killSqlconn = Nothing
 End If
 Response.Write "<Script Language=JavaScript>alert('请不要在参数中包含非法字符尝试注入!');</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
'----------------------------------

'--------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
 If WriteSql=True Then
 killSqlconn.Execute("insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values('"&Request.ServerVariables("REMOTE_ADDR")&"','"&Request.ServerVariables("URL")&"','GET','"&Fy_Get&"','"&replace(Request.QueryString(Fy_Get),"'","''")&"')")
 killSqlconn.close
 Set killSqlconn = Nothing
 End If
 Response.Write "<Script Language=JavaScript>alert('请不要在参数中包含非法字符尝试注入!');</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

If Kill_IP=True Then
 Dim Sqlin_IP,rsKill_IP,Kill_IPsql
 Sqlin_IP=Request.ServerVariables("REMOTE_ADDR")
 Kill_IPsql="select Sqlin_IP from SqlIn where Sqlin_IP='"&Sqlin_IP&"' and kill_ip=true"
 Set rsKill_IP=killSqlconn.execute(Kill_IPsql)
 If Not(rsKill_IP.eof or rsKill_IP.bof) Then
 Response.write "<Script Language=JavaScript>alert('你的Ip已经被本系统自动锁定!\n\n如想访问本站请和管理员联系!');</Script>"
 Response.End
 End If
 rsKill_IP.close
 
End If
%>


PHP:
/*************************

说明:

判断传递的变量中是否含有非法字符

如$_POST、$_GET

功能:

防注入

在每个php文件前加include(sql.php“);即可
**************************/

<?php

//要过滤的非法字符

$ArrFiltrate=array("'",";","union");

//出错后要跳转的url,不填则默认前一页

$StrGoUrl="";

//是否存在数组中的值

function FunStringExist($StrFiltrate,$ArrFiltrate){

foreach ($ArrFiltrate as $key=>$value){

if (eregi($value,$StrFiltrate)){

return true;

}

}

return false;

}

//合并$_POST 和 $_GET

if(function_exists(array_merge)){

$ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);

}else{

foreach($HTTP_POST_VARS as $key=>$value){

$ArrPostAndGet[]=$value;

}

foreach($HTTP_GET_VARS as $key=>$value){

$ArrPostAndGet[]=$value;

}

}

//验证开始

foreach($ArrPostAndGet as $key=>$value){

if (FunStringExist($value,$ArrFiltrate)){

echo "<script language=\"javascript\">alert(\"Neeao提示,非法字符\");</script>";

if (empty($StrGoUrl)){

echo "<script language=\"javascript\">history.go(-1);</script>";

}else{

echo "<script language=\"javascript\">window.location=\"".$StrGoUrl."\";</script>";

}

exit;

}

}

?>

Comments Feed Comments Feed: http://www.zhenhua.org/feed.asp?q=comment&id=152
UTF-8 Encoding Trackback URL: http://www.zhenhua.org/trackback.asp?id=152

There is no comment on this article.

If you feel this site you find this information helpful, please click on the donation, which is voluntary,Thank you.
Post Comment
Smilies
[arrow] [biggrin] [confused] [cool]
[cry] [eek] [evil] [exclaim]
[frown] [idea] [lol] [mad]
[mrgreen] [neutral] [question] [razz]
[redface] [rolleyes] [sad] [smile]
[surprised] [twisted] [wink]
Enable UBB Codes
Auto Convert URL
Show Smilies
Hidden Comment
Username:   Password:   Register Now?
Security Code * Please Enter the Security Code