asp程序存在SQL注入漏洞如何处理
发布网友
发布时间:2022-04-07 22:18
我来回答
共3个回答
热心网友
时间:2022-04-07 23:47
你都知道有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地址有错误,请与管理员联系"
热心网友
时间:2022-04-08 01:05
下载一个好的通用防注入程序,并引用到你的每个动态文件里面去
热心网友
时间:2022-04-08 02:40
SQL注入主要是利用文件规则还有SQL规则进行的,比如说他会在输入的参数里加写个注释符号注释掉你脚本那行后面的代码,或者利用引号配对问题让你的sql语句以他的参数内部结束,你只要看下sql注入方式就明白的,所以百分百安全的处理方法是没有的,不过你可以用些简单的方法比如对输入的字符串进行严格处理,就可以拉
asp程序存在SQL注入漏洞如何处理
>3、通用的SQL防注入程序一般的http请求不外乎get 和 post,所以只要我们在文件中过滤所有post或者get请求中的参数信息中非法字符即可,所以我们实现http 请求信息过滤就可以判断是是否受到SQL注入攻击。IIS传递给asp.dll的get 请求是是以字符串的形式,,当 传递给Request.QueryString数据后,asp解析器会分...
asp如何防sql注入asp防止sql注入
防止aspsql注入的方法有很多,需要严格的字符串过滤。在传递URL参数和提交表单时,必须对提交的内容进行字符串过滤,网站中使用的那些第三方插件必须是安全的,只有在没有漏洞的情况下才能使用,比如上传组件和使用的在线编辑器。上传文件时必须对文件进行严格的检测,这种只判断文件后缀的操作方法是不正确的。
ASP 网站关闭了写权限.还是不断被人注入黑链.程序也检查了好几次,没...
修补漏洞(修补网站漏洞也就是做一下网站安全。)1、修改网站后台的用户名和密码及后台的默认路径。2、更改数据库名,如果是ACCESS数据库,那文件的扩展名最好不要用mdb,改成ASP的,文件名也可以多几个特殊符号。3、接着检查一下网站有没有注入漏洞或跨站漏洞,如果有的话就相当打上防注入或防跨站补...
asp.net如何防止sql注入
此外,攻击者可以执行包含任意SQL语句的批处理命令。对于SQLServer提供程序,攻击者只需在新命令前面加上分号(;)。攻击者可以通过这种方式删除其他表的内容,甚至可以调用SQLServer的系统存储过程xp_cmdshell来命令和执行任意程序。 攻击者在文本框中输入以下内容,其目标是删除Customers表中的所有行。 《伦春》;从客户中删除...
关于SQL注入
http://www.163.com/news.asp?id=xx and '1'='2', news.asp运行异常;如果以上满足,则news.asp存在SQL注入漏洞,反之则不能注入 3、特殊情况的处理 有时ASP程序员会在程序员过滤掉单引号等字符,以防止SQL注入。此时可以用以下几种方法试一试。①大小定混合法:由于VBS并不区分大小写,而程序...
我的网站程序里面找不到conn.asp 文件 要修复SQL注入漏洞 怎么弄呢
不则每个系统都用conn.asp作文件名的,你可以直接看index.asp的代码就知道数据库连接代码在哪了,然后再来作相应的更改.要修复SQL注入,可以自己写安全检测,也可以使用网上现成的代码
ASP.NET网站程序防SQL注入式攻击方法
你可以通过CustomValidator自己创建一个 ⑸ 将用户登录名称 密码等数据加密保存 加密用户输入的数据 然后再将它与数据库中保存的数据比较 这相当于对用户输入的数据进行了 消毒 处理 用户输入的数据不再对数据库有任何特殊的意义 从而也就防止了攻击者注入SQL命令 System Web Security FormsAuthentication类有一...
ASP程序防止SQL注入的最好办法?
asp+sql防注入的方法很多,严格的字符串过滤是必须的,URL参数传递和表单提交时,提交内容一定要进行字符串过滤,还有在网站使用的那些第三方插件一定要确保安全,没有漏洞时才使用,例如使用的上传组件、在线编辑器等,上传文件时,一定要对文件进行严格的检测,只对文件后缀名进行判断的这种操作方法是不...
服务器被黑解决【asp+access】
asp的程序很容易呗注入,解决办法是找到有漏洞的那个asp程序,这个属于程序编写员的粗心导致的。如果不懂得asp程序修改不知道该怎么打上补丁,我给一个最简单的办法,你把后台入口隐藏起来,换个奇怪的名字等,让他们虽然能注入缺找不到你管理入口 ...
如何防止SQL注入漏洞 有哪些方法 具体介绍一下
所有的SQL注入都是从用户的输入开始的。如果你对所有用户输入进行了判定和过滤,就可以防止SQL注入了。用户输入有好几种,我就说说常见的吧。文本框、地址栏里***.asp?中?号后面的id=1之类的、单选框等等。一般SQL注入都用地址栏里的。。。如果要说怎么注入我想我就和上面的这位“仁兄”一样的了...