FLOOD CC攻击原理分析与防范方法(2)


〈%
 
  if session(“refresh”)〈〉 1 then
 
  Session(“refresh”)=session(“refresh”)+1
 
  Response.redirect “index.asp”
 
  End if
 
  %〉

这样用户第一次访问会使得Refresh=1,第二次访问,正常,第三次,不让他访问了,认为是刷新,可以加上一个时间参数,让多少时间允许访问,这样就限制了耗时间的页面的访问,对正常客户几乎没有什么影响。

3. 通过代理发送的HTTP_X_FORWARDED_FOR变量来判断使用代理攻击机器的真实IP,这招完全可以找到发动攻击的人,当然,不是所有的代理服务器都发送,但是有很多代理都发送这个参数.详细代码:

程序代码:

〈%
 
  Dim fsoObject
 
  Dim tsObject
 
  dim file
 
  if Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" then
 
  response.write "无代理访问"
 
  response.end
 
  end if
 
  Set fsoObject = Server.CreateObject("Scripting.FileSystemObject")
 
  file = server.mappath("CCLog.txt")
 
  if not fsoObject.fileexists(file) then
 
  fsoObject.createtextfile file,true,false
 
  end if
 
  set tsObject = fsoObject.OpenTextFile(file,8)
 
  tsObject.Writeline Request.ServerVariables("HTTP_X_FORWARDED_FOR")
 
  &"["Request.ServerVariables("REMOTE_ADDR")&"]"&now()
 
  Set fsoObject = Nothing
 
  Set tsObject = Nothing
 
  response.write "有代理访问"
 
  %〉

这样会生成CCLog.txt,它的记录格式是:真实IP [代理的IP] 时间,看看哪个真实IP出现的次数多,就知道是谁在攻击了.将这个代码做成Conn.asp文件,替代那些连接数据库的文件,这样所有的数据库请求就连接到这个文件上,然后马上就能发现攻击的人。

4. 还有一个方法就是把需要对数据查询的语句做在Redirect后面,让对方必须先访问一个判断页面,然后Redirect过去。

5. 在存在多站的服务器上,严格限制每一个站允许的IP连接数和CPU使用时间,这是一个很有效的方法。

CC的防御要从代码做起,其实一个好的页面代码都应该注意这些东西,还有SQL注入,不光是一个入侵工具,更是一个DDOS缺口,大家都应该在代码中注意.举个例子吧,某服务器,开动了5000线的CC攻击,没有一点反应,因为它所有的访问数据库请求都必须一个随机参数在Session里面,全是静态页面,没有效果.突然发现它有一个请求会和外面的服务器联系获得,需要较长的时间,而且没有什么认证,开800线攻击,服务器马上满负荷了。

代码层的防御需要从点点滴滴做起,一个脚本代码的错误,可能带来的是整个站的影响,甚至是整个服务器的影响,慎之!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/efba3fe1712b5923e12397055c03e0f3.html