sp防注入代码和防cookie注入代码

来源:互联网 发布:sql insert 多行数据 编辑:程序博客网 时间:2024/05/21 09:54

asp防注入代码和防cookie注入代码


以前只知道日站不知道安全。这几天略微了解了一些。把自己这几天常用的asp防注入代码和防cookie注入代码发到自己博客上来。仅作记录方便以后查看。

<%
Response.Buffer = True   '缓存页面
'防范get注入
If Request.QueryString <> ""   Then StopInjection(Request.QueryString)
'防范post注入
If Request.Form <> ""   Then StopInjection(Request.Form)
'防范cookies注入
If Request.Cookies <> ""   Then StopInjection(Request.Cookies)
'正则子函数
Function StopInjection(Values)
Dim regEx
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = "'|;|#|([\s\b+()]+(select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|retun|as|go|exists)[\s\b+]*)"
Dim sItem, sValue
For Each sItem In Values
sValue = Values(sItem)
If regEx.Test(sValue) Then
Response.Write "<Script Language=javascript>alert('非法注入!你的行为已被记录!!');history.back(-1);</Script>"
Response.End
End If
Next
Set regEx = Nothing
End function
%>

使用方法:“把上面代码复制到conn.asp文件中放到文件最上方就可以了。(ps:如果你改名的话就放到数据库连接文件中不要符文代码前后的<%%>)”

其他方法代码:


放入conn.asp中(拒绝攻击 万能Asp防注入代码)
第一种:

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|mid|master|truncate|char|declare"SQL_inj = split(SQL_Injdata,"|")For SQL_Data=0 To Ubound(SQL_inj)if instr(squery&sURL,Sql_Inj(Sql_DATA))>0 ThenResponse.Write "SQL防注入系统"Response.endend ifnext
第二种:
SQL_injdata =":|;|>|<|--|sp_|xp_|\|dir|cmd|^|(|)|+|$|'|copy|format|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"SQL_inj = split(SQL_Injdata,"|")If Request.QueryString<>"" ThenFor Each SQL_Get In Request.QueryStringFor SQL_Data=0 To Ubound(SQL_inj)if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 ThenResponse.Write "SQL通用防注入系统"Response.endend ifnextNextEnd IfIf Request.Form<>"" ThenFor Each Sql_Post In Request.FormFor SQL_Data=0 To Ubound(SQL_inj)if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 ThenResponse.Write "SQL通用防注入系统"Response.endend ifnextnextend if

on error resume next   '这行代码放到conn.asp的第一行。'防止注入dim qs,errc,iiiqs=request.servervariables("query_string")'response.write(qs)dim deStr(18)deStr(0)="net user"deStr(1)="xp_cmdshell"deStr(2)="/add"deStr(3)="exec%20master.dbo.xp_cmdshell"deStr(4)="net localgroup administrators"deStr(5)="select"deStr(6)="count"deStr(7)="asc"deStr(8)="char"deStr(9)="mid"deStr(10)="'"deStr(11)=":"deStr(12)=""""deStr(13)="insert"deStr(14)="delete"deStr(15)="drop"deStr(16)="truncate"deStr(17)="from"deStr(18)="%"errc=falsefor iii= 0 to ubound(deStr)if instr(qs,deStr(iii))<>0 thenerrc=trueend ifnextif errc thenResponse.Write("对不起,非法URL地址请求!")response.endend if

其他写法
把下面的代码保存在公用文件里就可以防止注入扫描了,比方说conn.asp 里,根据多年开发的经验建议将网站后台和前台分离,后台一个conn.asp 前台一个conn.asp 前台conn.asp加如下代码
<% 
Dim flashack_Post,flashack_Get,flashack_In,flashack_Inf,flashack_Xh,flashack_db,flashack_dbstr 
flashack_In "'※;※and※exec※insert※select※delete※update※count※*※%※chr※mid※master※truncate※char※declare" 
flashack_Inf split(flashack_In,"※") 
If Request.Form<>"" Then 
For Each flashack_Post In Request.Form 

For flashack_Xh=0 To Ubound(flashack_Inf) 
If Instr(LCase(Request.Form(flashack_Post)),flashack_Inf(flashack_Xh))<>0 Then 
Response.Write "<Script Language=JavaScript>alert('flashack防注入系统提示你↓\n\n请不要在参数中包含非法字符尝试注入');</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 "提交参数:"&flashack_Post&"<br>" 
Response.Write "提交数据:"&Request.Form(flashack_Post) 
Response.End 
End If 
Next 
Next 
End If 
If Request.QueryString<>"" Then 
For Each flashack_Get In Request.QueryString 
For flashack_Xh=0 To Ubound(flashack_Inf) 
If Instr(LCase(Request.QueryString(flashack_Get)),flashack_Inf(flashack_Xh))<>0 Then 
Response.Write "<Script Language=JavaScript>alert('flashack防注入系统提示你↓\n\n请不要在参数中包含非法字符尝试注入');</Script>" 
Response.Write "非法操作!flashack已经给你做了如下记录↓<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 "提交参数:"&flashack_Get&"<br>" 
Response.Write "提交数据:"&Request.QueryString(flashack_Get) 
Response.End 
End If 
Next 
Next 
End If 
%> 

===== 以下为摘录======================

网页防篡改

一,Stream开关可自由设置,ASP中的ADODB.Stream 对象用来操作二进制或文本数据的流。通常用于无组件上传和验证码等功能。关闭该组件可以提高网站安全。 Fso开关也可自由设置,FSO(FileSystemObject)是微软ASP的一个对文件操作的控件,该控件可以对服务器进行读取、新建、修改、删除目录以及文件的操作。关闭该组件有利于提高网站安全。

二,假设网站建好后,今后一段时间都不会再用到ftp上传功能,这时可以暂时关闭FTP上传,有助于提高网站的安全,即使ftp密码泄露,黑客也不能操作空间内的文件,设置后60秒后生效。

三,另外还可设置脚本权限与写入权限,如果网站只使用了asp,可设置为只开放asp权限。这样黑客即使上传了php的木马到空间也不能运行,最少的权限=最大的安全。写入权限设置则系统支持全国领先的目录权限设置,允许关闭网站的写入权限,锁定虚拟主机。对安全有重要意义,例如可以将access数据库放在databases目录,而将wwwroot目录的写入权限关闭,令asp木马根本无法上传,这样比关闭FSO更安全。


0 0
原创粉丝点击