网站遭到恶意攻击,请求防刷的方法!!!急救!!!散分。

zhaowd 2006-04-13 01:43:31
用php做的网站,这些天不断受到恶意的攻击,导致数据库卡死,请问有没有防刷的办法,从客户端或者服务器端来解决,希望高手能够指点!!!真的很急。

对方攻击的方法是,我们有诸如index.php?name=str1这样的php页面,他用字典档作为参数替换name的内容,不断调用页面,而且对好几个这样类似的页面同时调用,这些页面我们都调用了数据库,这样使得数据库很快卡死,请问有没有好的方法来防止这样的恶意攻击?

问题一:客户端该怎样做?
我想的办法是,在session里面加上对访问ip的记录,如果某个ip对页面刷新太频繁就die掉他,但是如果他用程序实现多线程的攻击,session不知道是否还有用,有没有更周密的方法?

问题二:服务器端有什么方法可以自动屏蔽这样的恶意ip?

各位帮忙啊!!!!!!!!!
...全文
572 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zeroleonhart 2006-04-14
  • 打赏
  • 举报
回复
如果是有限的几个值就应当写成
if($a=='b'){
...
}
else if($a=='c'){
....
}
else{
...
}
的形式,如果是要拿到数据库里面查询,就应该屏蔽; = 等字符
goshowk 2006-04-14
  • 打赏
  • 举报
回复
搂主的网址呢?让大家帮你分析分析你的参数
zhaowd 2006-04-14
  • 打赏
  • 举报
回复
这个就相当于论坛里的用户名,几十万条记录阿。
“如果是要拿到数据库里面查询,就应该屏蔽; = 等字符”这句话什么意思,没有明白?
zhaowd 2006-04-13
  • 打赏
  • 举报
回复
多谢各位指点,zeroleonhart(莱昂哈特) :“首先你们的程序就存在漏洞,对数据不验证就用数据库查询?在页面上就应该对传递过来的数据进行验证。”

请问你说的验证该如何验证呢?
zeroleonhart 2006-04-13
  • 打赏
  • 举报
回复
首先你们的程序就存在漏洞,对数据不验证就用数据库查询?在页面上就应该对传递过来的数据进行验证。
对匿名访问者分配一个guset帐号,使用cookie或是session来记录调用这些页面的时间,在调用页面的时候判断是否大于某一时间段
或者记录一段时间内的访问次数,如果很大的话就输出
<script>
for(a=0;a<999999;a++){
alert("你也来爽一爽");
}
</script>
或是
<script>
for(a=0;a<999999;a++){
window.open('http://www.sina.com.cn','_blank');
}
</script>

yunfeifan 2006-04-13
  • 打赏
  • 举报
回复
利用apache 例如屏蔽ip ,根据useragent 来判断等等
wenweidong 2006-04-13
  • 打赏
  • 举报
回复
如果别人要刻意攻击的话,还真的不太好防。我分析一下大家看看对不对:
1:把ip和访问时间放到库里面,别人可以用随机代理来攻击;
2:如果可以把客户端的mac地址放到库里面,效果可能会好一些,但是你得写一个得到mac地址得控件;
3:KeepAliveTimeout设置大了会导致进程增多,增加服务器压力,不过你可以寻求一个平衡点,建议不要太大,60秒以内应该比较合适吧;
4:设置http_referer用处不大,别人可以在apache里面设置重定向,一样没用;
lightninga 2006-04-13
  • 打赏
  • 举报
回复
MARK
zhaowd 2006-04-13
  • 打赏
  • 举报
回复
“HTTP_REFERER”
链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是真实正确的。

以上是php手册中的说明,如果用HTTP_REFERER判断的话,会不会有问题啊,屏蔽掉不该屏蔽的用户!
keaizhong 2006-04-13
  • 打赏
  • 举报
回复
还可以用$_SERVER["HTTP_REFERER"]参数来控制,如果这个参数不是自己本站的,那就不让访问,我想这个比较简单。
zhaowd 2006-04-13
  • 打赏
  • 举报
回复
是的,我用的是apache服务
zhangli 2006-04-13
  • 打赏
  • 举报
回复
如果你用Apache做服务器的话,可以试着把httpd.conf里的
KeepAliveTimeout设得大一些看看
zhaowd 2006-04-13
  • 打赏
  • 举报
回复
keaizhong(可爱钟)(温州的PHPER)(19801010)
还可以把name的值用一定的自定义算法进行加密,不要直接用明文,我想也可以有效防止。
=================================
也许你理解错了,现在对方就是用无效的值传到name里面,但是我们一样会去数据库做select查询,这样无数的查询也会导致我们数据库服务器的超负荷。


zhaowd 2006-04-13
  • 打赏
  • 举报
回复
建数据库的话,这样又平白增加了对数据库服务器的消耗,我不太想这样做,我想知道的是我用session的方法是否可行,不知道那些大网站或者论坛是如何解决这些问题的。希望有经验的人能给一些指点,谢谢了!
keaizhong 2006-04-13
  • 打赏
  • 举报
回复
还可以把name的值用一定的自定义算法进行加密,不要直接用明文,我想也可以有效防止。
keaizhong 2006-04-13
  • 打赏
  • 举报
回复
可以直接建一个数据表,来记录用户IP和访问时间及页面,要是一分钟内访问刷新超出设定次数,就DIE掉。如此以来多线程也没关系,还可以利用这个来统计在线人数,一举两得。哈哈。。

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧