灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2610回复:0

防止数据库被注入恶意代码

楼主#
更多 发布于:2012-08-24 21:53

数据库被恶意注入代码是非常致命的问题,主要的手段有:利用程序漏洞,用一段程序就可以测试出来,主要体现在前台提交的一些表单上没有对非法字符进行过滤!那么我们如何防止注入呢?(这里只针对asp+MSSQL)
  
  
首先就是在程序中加上防止注入的过滤函数:
  
检测非字符
SQL_injdata = "|exec|insert|||delete|set | || | |char | || ||mid( |asc( ||cast|declare|exec|varchar|<script|script|iframe|3bomb|c.js"
SQL_inj = split(SQL_Injdata,"|")
  
检测GET
If Request.QueryString<>"" Then
  For Each SQL_Get In Request.QueryString
   For SQL_Data=0 To Ubound(SQL_inj)
   if instr(lcase(Request.QueryString(SQL_Get)),Sql_Inj(Sql_DATA))>0 Then
   response.write "输入非法,数据库拒绝一些特殊的字符!"
   Response.end
   end if
   next
  Next
End If
  
检测POST
If Request.Form<>"" Then
  For Each Sql_Post In Request.Form
   For SQL_Data=0 To Ubound(SQL_inj)
   if instr(lcase(Request.Form(Sql_Post)),Sql_Inj(Sql_DATA))>0 Then
   response.write "输入非法,数据库拒绝一些特殊的字符!"
   Response.end
   end if
   next
  next
end if
  
检测cookie
If Request.Cookies<>"" Then
  For Each Sql_Cookie In Request.Cookies
   For SQL_Data=0 To Ubound(SQL_inj)
   if instr(lcase(Request.Cookies(Sql_Cookie)),Sql_Inj(Sql_DATA))>0 Then
   response.write "输入非法, 数据库拒绝一些特殊的字符!"
   Response.end
   end if
   next
  next
end if
  
这样就基本上把表单提交数据时的漏洞给堵死了!!从三个方面判断,直接请求数据和表单提交或者cookies提交数据非法字符都会被过滤掉!
  
dim server_v1,server_v2
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
if server_v1<>"" then
  if instr(server_v1,"3bomb")>0 then
  response.write "<br><br><center><table border=1 cellpadding=20 bordercolor=black bgcolor=#EEEEEE width=450>"
  response.write "<tr><td style=font:9pt Verdana>"
  response.write "你提交的路径有误,禁止从站点外部提交数据请不要乱该参数!"
  response.write "</td></tr></table></center>"
  response.end
  end if
else
server_v1=Cstr(Request.ServerVariables("SERVER_NAME"))
end if
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
  
if instr(server_v1,"3bomb")>0instr(server_v2,"3bomb")>0 then
  response.write "<br><br><center><table border=1 cellpadding=20 bordercolor=black bgcolor=#EEEEEE width=450>"
  response.write "<tr><td style=font:9pt Verdana>"
  response.write "你提交的路径有误,禁止从站点外部提交数据请不要乱该参数!"
  response.write "</td></tr></table></center>"
  response.end
end if
  
这段程序首先得到访问你网站的来源,如果是从您知道的一个非法域名3bomb上过来就不让他访问。
这个就完成了对某一指定域名的屏蔽,这个域名极有可能就是一段妈妈程序!
  
禁止某些ip访问---------------------
if instr(Request.ServerVariables("REMOTE_ADDR"),"209.172.33")>0 then
Response.Write "拒绝访问"
response.End()
end if
  
实在不行就通过ip进行屏蔽,如果访问来源是某一个ip段就进行屏蔽
  
这三招保证您的数据库以后不在受注入的干扰,个人的亲身体验

喜欢0 评分0
游客

返回顶部