三款asp防sql注入函数

当我要获取一个数字型变量str
value=saferequest("str",1,0)
这句的意思是:获取参数str中的值,并进行数字判断,不是数字的或者为空的时候,value就等于0,否则,value等于request("str")的值。

function saferequest(paraname,paratype,lenlimit)
 dim paravalue
 paravalue = trim(request(paraname))
 if paratype = 1 then
  if isnull(paravalue) or (not isnumeric(paravalue)) then
   paravalue = lenlimit
  end if
 else
  if isnull(paravalue) then
   paravalue = ""
  else
   dim strbadchar, arrbadchar, tempchar, i
   strbadchar = "+,',--,^," & chr(34) & "," & chr(0) & ""
   arrbadchar = split(strbadchar, ",")
   tempchar = paravalue
   for i = 0 to ubound(arrbadchar)
    tempchar = replace(tempchar, arrbadchar(i), "")
   next
   tempchar = replace(tempchar, "@@", "@")

   if lenlimit <> -1 then
    tempchar = left(tempchar,lenlimit)
   end if
   paravalue = tempchar
  end if
 end if
 saferequest = paravalue
end function

使用方法:
当我要获取一个字符型变量str
value=saferequest("str",0,50)
这句的意思是:获取参数str中的值,只获取前50个字符,超过的丢失,并对那些特殊符号进行了过滤。

方法二

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

方法三

通用的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('www.haohaoxx8.comsql通用防注入系统提示↓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('www.haohaoxx8.comsql通用防注入系统提示↓nn请不要在参数中包含非法字符尝试注入!</script>"
    response.end
   end if
  next
 next
end if

时间: 2024-10-28 18:59:42

三款asp防sql注入函数的相关文章

asp防sql注入源程序

<% squery=lcase(Request.ServerVariables("QUERY_STRING")) sURL=lcase(Request.ServerVariables("HTTP_HOST")) SQL_injdata =":|;|>|<|--|sp_|xp_||dir|cmd|^|(|)|+|$|'|copy|format|and|exec|insert|select|delete|update|count|*|chr|

ASP防SQL注入攻击程序

程序|攻击|攻击   SQL注入被那些菜鸟级别的所谓黑客高手玩出了滋味,发现现在大部分黑客入侵都是基于SQL注入实现的.SQL注入被那些菜鸟级别的所谓黑客高手玩出了滋味,发现现在大部分黑客入侵都是基于SQL注入实现的,哎,谁让这个入门容易呢,好了,不说废话了,现在我开始说如果编写通用的SQL防注入程序一般的http请求不外乎get 和 post,所以只要我们在文件中过滤所有post或者get请求中的参数信息中非法字符即可,所以我们实现http 请求信息过滤就可以判断是是否受到SQL注入攻击. I

用的ASP防SQL注入攻击程序

程序|攻击 SQL注入被那些菜鸟级别的所谓黑客高手玩出了滋味,发现现在大部分黑客入侵都是基于SQL注入实现的.SQL注入被那些菜鸟级别的所谓黑客高手玩出了滋味,发现现在大部分黑客入侵都是基于SQL注入实现的,哎,谁让这个入门容易呢,好了,不说废话了,现在我开始说如果编写通用的SQL防注入程序一般的http请求不外乎get 和 post,所以只要我们在文件中过滤所有post或者get请求中的参数信息中非法字符即可,所以我们实现http 请求信息过滤就可以判断是是否受到SQL注入攻击. IIS传递给

编写通用的ASP防SQL注入攻击程序

程序|攻击 SQL注入被那些菜鸟级别的所谓黑客高手玩出了滋味,发现现在大部分黑客入侵都是基于SQL注入实现的,哎,谁让这个入门容易呢,好了,不说废话了,现在我开始说如果编写通用的SQL防注入程序一般的http请求不外乎get 和 post,所以只要我们在文件中过滤所有post或者get请求中的参数信息中非法字符即可,所以我们实现http 请求信息过滤就可以判断是是否受到SQL注入攻击. IIS传递给asp.dll的get 请求是是以字符串的形式,,当 传递给Request.QueryString

asp.net防sql注入多种方法与实例代码应用(1/4)

asp教程.net防sql注入多种方法与实例代码应用 清除Request方法的注入问题         static string[] get_sql_a()         {             string Sql_1 = "exec|insert+|select+|delete|update|count|master+|truncate|char|declare|drop+|drop+table|creat+|creat+table";             string

EasyASP v2.2新功能介绍(1):Easp是如何实现防sql注入的

EasyASP终于到v2.2了,目前还在完善手册,群里有很多人问如何使用的问题 ,所以打算在写手册的同时写一些新功能的介绍,方便使用Easp 的童鞋们快速 进入状态.说实话,看到这么多人还在写ASP.还在支持Easp,觉得蛮难得的, 所以也一直没有丢下Easp的开发,还是希望Easp能给最后的ASPer们一点微薄的 帮助. EasyASP v2.2的改动比较大,放弃了不少原来我觉得不好用的方法,当然, 更多的是加入了不少我觉得会用得很哈屁的新功能.这是这个系列的第一篇文章 ,准备讲讲EasyAS

php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击

php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击 php防止SQL注入攻击一般有三种方法: 使用mysql_real_escape_string函数 使用addslashes函数 使用mysql bind_param() 本文章向大家详细介绍这三个方法在防止SQL注入攻击中的效果及区别. mysql_real_escape_string防sql注入攻击 mysql_real_escape_string() 函数转义 SQL 语句中

实践有效的网站防SQL注入方法(一)

中介交易 SEO诊断 淘宝客 云主机 技术大厅 几年前,网站中大多数都存在sql注入.sql注入在这几年可以说已经被广大网站管理者所认知,并在搭建网站的时候都能注意到网站防注入这一问题,但为什么我们EeSafe现在收录的网站中,还是有很大一部分存在sql注入问题?我想并不是由于网站站长不知道sql注入的危害(危害我这里就不说了,大家可以去百度等搜索引擎上查找),而是由于网站对于像sql注入这样的问题的防范和发掘不够深造成的,这里我把防范sql的黄金方法和大家交流一下,应该能够在网站防止安全漏洞的

ASP防止SQL注入方法

  通用防SQL注入代码ASP版 代码 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