找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: chinesesuperman

我也来发一下防CC攻击的代码

[复制链接]

981

主题

4999

回帖

1万

积分

论坛元老

积分
12995
发表于 2010-6-14 10:14:49 | 显示全部楼层
同意
回复

使用道具 举报

25

主题

1091

回帖

2269

积分

金牌会员

积分
2269
发表于 2010-6-14 10:20:38 | 显示全部楼层
cc的重头基本是db操作那块,用这个干掉之后能省不少,不过一般python,java这些类守护进程模式的web应用,本身db就是池或者长连接,扛并发性比asp,php这些跑一次连一次释放一次的高不少....django这种请求结束会关闭db连接的不在此列......
回复

使用道具 举报

11

主题

38

回帖

125

积分

注册会员

积分
125
 楼主| 发表于 2010-6-14 10:28:08 | 显示全部楼层
原帖由 winsock 于 2010-6-14 10:06 发表


写个middleware套上去,写函数不是好办法.......另外cache有incr方法的................用不着自己去+1的....


用中间件的话,那么所有页面都会处理,中间件检查 Header 还比较合适,而我写的哪个函数,只是对耗资源的页面检查,
cache的incr,也只是对cacahe.set的封装而已,而且如果键值不存在,会抛出ValueError
回复

使用道具 举报

11

主题

38

回帖

125

积分

注册会员

积分
125
 楼主| 发表于 2010-6-14 13:08:54 | 显示全部楼层
原帖由 gdtv 于 2010-6-14 10:14 发表


iptables 的 recent 或者hashlimit 模块不也是可以限制单位时间内的访问次数吗?
用Web程序来限制,效率比不上用iptables 吧?


用iptables的话,比较容易误封,比如图片比较多的站,那么连接就比较多,无法判断是正常还是CC
回复

使用道具 举报

11

主题

38

回帖

125

积分

注册会员

积分
125
 楼主| 发表于 2010-6-14 13:12:44 | 显示全部楼层
原帖由 mslxd 于 2010-6-14 09:35 发表


好像没人说怎么用py开发web,都是什么php asp,楼主去哪里学的啊?

貌似gg赠送的那个app空间是用py的


网上python中文手册很多,django手册也很多,http://djangobook.py3k.cn/2.0/ 这个django手册比较适合初学者
回复

使用道具 举报

25

主题

1091

回帖

2269

积分

金牌会员

积分
2269
发表于 2010-6-14 13:14:45 | 显示全部楼层
原帖由 chinesesuperman 于 2010-6-14 13:08 发表




用中间件的话,那么所有页面都会处理,中间件检查 Header 还比较合适,而我写的哪个函数,只是对耗资源的页面检查,
cache的incr,也只是对cacahe.set的封装而已,而且如果键值不存在,会抛出ValueError ...


不是cache.set的封装,incr是memcached本身的指令,除了第一次不存在抛出异常需要cache.set外,剩下的都只是一次调用,cache.get后再set的话,每次都是两次调用
回复

使用道具 举报

11

主题

38

回帖

125

积分

注册会员

积分
125
 楼主| 发表于 2010-6-14 15:06:11 | 显示全部楼层
原帖由 winsock 于 2010-6-14 15:06 发表




不是cache.set的封装,incr是memcached本身的指令,除了第一次不存在抛出异常需要cache.set外,剩下的都只是一次调用,cache.get后再set的话,每次都是两次调用 ...


看了一下django的cache源代码,除了memcached有incr外,其他backend缓存的incr都是先get后set的封装,而set的时候,没有带timeout参数,自动用default_timeout参数
这个就会跟自己的pertime不一致,如果只用memcached的话,完全可以用incr的方法,但考虑到移植性,还是采用安全的方法比较好,不会出错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2025-1-11 23:02 , Processed in 0.018982 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表