喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

招聘PHP开发人员(北京)

上一主题 下一主题
 11  1/2  1  2  > 
     
标题: 从trackback说起  
 
sadly (sadly)
管理员
Rank: 9Rank: 9Rank: 9
管理员


UID 1
精华 4
积分 2033
帖子 2023
金钱 1540 喜悦币
威望 40
人脉 453
阅读权限 200
注册 1970-1-1
来自 北京 三元桥
状态 离线
[广告]: 代充Paypal帐号美元
从trackback说起

前两天在网上逛的时候看到了关于blog里trackback的资料,发现它在设计上是有隐患的,
后来还给某几个知名的网站发了点纪念品, 惹得人家直说我早就知到了,不过这关你屁事.
我对口水战没有什么兴趣. 在此说一点程序设计中我个人认为应该考虑的问题,希望
能够抛砖引玉一下.

1 连续的数字id
  使用数字id来标识一篇资料,比如blog的文章, 这当然最简单,最容易实现的. 因为我们设计
数据库的时候通常都会加一个自增长的id来做唯一标志. 用id来标识很直接, 也不需要
额外的存储空间. 不过这显然不是一个很安全的方式, 象村子用的DZ这个程序
viewthread.php?tid=文章编号  是看帖子.只要跑一个循环就可以把全部的文章都抓到了.被
人抓站当然是难免了,但要是被人乱发帖恐怕就不那么舒服了.

大家都知道数据库对读是有优化的, 而对于写所能做的事情则很有限. 想一想, 如果有个
程序不停的发帖,  数据库记录疯涨 ,数据不断更新, 那你设计的静态化之类的恐怕是没
什么效果了.

假如, 我们在数据库里加一个字段 ukey , 设计为唯一的标志, 数据取个随机数好了
当然最好是字母数字混和的长字符串.
现在用  (for $i=起始id;$i<终止id;$i++) 回复第$i个文章  的办法显然是不行了.  

不过还是有办法的. 它可以先抓列表页,然后分析出每个文章的ukey, 之后
再 (for $i=起始值;$i<要发送的数量;$i++) 回复第$all_ukey_array[$i]个文章.

于是, 我们在回帖的时候给每个文章加上不同的随机识别码.  好了. 现在它只好先抓到
列表页, 然后再抓具体页面并分析出这个文章对应的识别码. 最后  
再 ($i=起始值;$i<要发送的数量;$i++) 用识别码$all_seccode_array[$i] 回复第$all_ukey_array[$i]个文章

看来还是没有解决, 图形验证码浮出了水面, 它确实够安全, 可是图形验证码对于正常使
用的用户是不够友好的, 如果每次发帖都要输一个讨厌的验证码那用户就没什么兴趣了.

算了,还是放弃它, 用户看一篇文章会看多久然后回复它呢? 3分钟? 5分钟? 把随机识别
码加上一个有效时间.

看起来好多了. 当你用一个连续的数字id做唯一标志又没有其他限制的时候, 估计每秒钟发个几十帖
是没问题的. 你把id变成一个随机的ukey以后, 大概能减慢不少了. 如果再加上其他的验证限制,
降到每秒几个看来是不成问题的.

它如果是不停的发新帖呢? 压根没什么ukey, 当然你也可以产生一个随机识别码:)
因为不用抓列表再抓识别码发帖的速度一下子又快起来...

2 正常行为和异常行为
一个正常的用户每秒钟能打多少个字? 按多少次拷备/粘帖键?
如果一个用户1秒钟发了10个文章......(限制一下每30秒只允许发一帖?)...
如果一个用户3分钟发了6个文章,每个文章都有2000字......(很勤劳的转贴者啊)...
如果一个用户6分钟里发了12个文章,但标题或者内容都一样长......(算这么准,数学博士?)...
如果一个用户连续1个小时都在发文章......(绝对应该得五一劳动奖章)...

3 黑名单
IP (可以用代理服务器啊),用户名(可以注册很多个啊),关键词(本来也是随便写的啊)......
看起来作用有限啊....

4 局部?整体?
如果一个文章是$user发布的
这样的回帖路径  
blog.abc.com/$user/reply/$id
和这样的回帖路径   
blog.abc.com/reply/$id
显然威胁是不大一样的,一个是局部,一个是整体。

5 菜鸟乐园?
操做系统的某某漏洞本来是个高级的玩意,等到攻击器满天飞的时候就不是个别人的私家玩具了。
网站也一样,把程序设计到用十分钟写一段js就能把系统搞的乱七八糟,
和需要花两天写个程序还要考虑什么随机数,多线程,代理服务器之类的是不大同的。

6 do it
服务既然要公开提供给用户总是有办法来破坏,就随它去吧?
一个水桶底上少块木板和有一个虫子眼一样么?

7 完美设计 vs 快速响应
设计是不会完美,你总会遗漏东西,今天一个优秀的设计明天环境变了也许就成了鸡肋,快速响
应才是真的道理。




以PHP在中国的繁荣发展为己任
QQ:824008 MSN:sadly@phpx.com
2006-3-24 02:27 PM#1
查看资料  访问主页  Blog  发短消息  QQ  ICQ 状态  顶部
 
冰流星 (冰流星)
版主
Rank: 7Rank: 7Rank: 7
堕落的人



UID 9529
精华 0
积分 5063
帖子 3063
金钱 5063 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2001-9-17
状态 离线
[广告]: 代充Paypal帐号美元
7 完美设计 vs 快速响应
设计是不会完美,你总会遗漏动西,今天一个优秀的设计明天环境变了也许就成了鸡肋,快速响
应才是真的道理。
的确,再周密也会出现意外
而且还有一个问题就是考虑得越周密,其设计的东西就越庞大,有些时候大约是不得不牺牲些啥吧

[ 本帖最后由 冰流星 于 2006-3-24 03:02 PM 编辑 ]




突然发现,sadly其实是很邪恶的,实在是太阴险鸟,太卑鄙鸟
2006-3-24 02:57 PM#2
查看资料  Blog  发短消息  顶部
 
sanders_yao
版主
Rank: 7Rank: 7Rank: 7
or2 =333


UID 30286
精华 0
积分 2575
帖子 4783
金钱 2572 喜悦币
威望 0
人脉 3
阅读权限 100
注册 2004-7-23
来自 北京 菜户营
状态 离线
[推荐阅读] 招聘PHP+MYSQL高手
安全和功能强大似乎有点矛盾哦~~~

一个会话一套文章id(没试过)

这样如果攻击程序使用更欢用户名的方法,就找不到相同的文章

不过用户也一样-_-b




最近写的一些代码都会在以下地址发布,有兴趣的来批:
http://www.phpx.com/happy/thread-131368-1-1.html
2006-3-24 03:01 PM#3
查看资料  Blog  发短消息  顶部
 
kwg9751 (kwg9751)
新手上路
Rank: 1
初级会员



UID 67557
精华 0
积分 6
帖子 10
金钱 6 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2005-12-28
状态 离线
[推荐阅读] 求分页函数
谈技术,谈技术啊,劳骚的不要

[edited by sadly]
2006-3-24 03:46 PM#4
查看资料  发短消息  顶部
 
kingerq
中级会员
Rank: 3Rank: 3
老会员


UID 19868
精华 0
积分 479
帖子 485
金钱 479 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2003-4-25
来自 浙江温州
状态 离线
[推荐阅读] 高手!这个mysql错误是怎么回事啊?
应验了一句话:计划赶不上变化。。
再好的规划也会有遗漏的地方。
但不是每一个地方都会被人发现并且利用,及时亡羊补牢,也为时未晚。。




资料:Kingerq's PHP
2006-3-24 04:35 PM#5
查看资料  访问主页  发短消息  顶部
 
sundfly (云中鹤)
论坛元老
Rank: 8Rank: 8
恶人谷四少爷


UID 21593
精华 0
积分 3455
帖子 3506
金钱 3455 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2003-7-11
来自 广州
状态 离线
[推荐阅读] 发布 PHPED 4.5 汉化包
网上有不少抓站工具啊,可以把数据库中的内容全部以html页面全抓下来,有时连asp程序都可以取下来.....
2006-3-24 06:22 PM#6
查看资料  访问主页  发短消息  QQ  ICQ 状态  顶部
 
cogcong
高级会员
Rank: 4
南瓜茶


UID 21331
精华 0
积分 504
帖子 594
金钱 504 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2003-7-3
来自 广东
状态 离线
[推荐阅读] 请问如何跟踪一个MYSQL查询?
漏洞在不能视而不见,让精蝇继续空想去,偶们继续走自己的路......顶村长!
2006-3-24 07:26 PM#7
查看资料  发短消息  顶部
 
无喱头 (无喱头)
论坛元老
Rank: 8Rank: 8
扯蛋仙


UID 24846
精华 3
积分 5957
帖子 1152
金钱 5893 喜悦币
威望 30
人脉 34
阅读权限 90
注册 2003-11-26
状态 离线
[推荐阅读] 如何找出数组中最大的数(如何生成个新数组)
_____________



http://www.phpsoho.com 重新开启
2006-3-24 09:22 PM#8
查看资料  Blog  发短消息  顶部
 
淘易拍
新手上路
Rank: 1



UID 70089
精华 0
积分 12
帖子 15
金钱 12 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-3-22
状态 离线
[推荐阅读] 配置iptables
好文章.我收藏了.
2006-3-24 11:13 PM#9
查看资料  发短消息  顶部
 
奶瓶 (NP博士)
版主
Rank: 7Rank: 7Rank: 7
老仙


UID 52707
精华 4
积分 5570
帖子 6248
金钱 5520 喜悦币
威望 50
人脉 0
阅读权限 100
注册 2004-11-22
来自 北大中文系
状态 在线
[推荐阅读] preg_match和ereg_match有什么不同
村长怒了,哈




图片包子,注册送100包子!
2006-3-25 12:50 AM#10
查看资料  访问主页  Blog  发短消息  QQ  ICQ 状态  Yahoo!  顶部
 11  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.032011 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP