在pubilc_board函数(libBBS/boards.c line 1306)中,
限制读取权限但 PERM_DEFAULT 可以访问 的时候,也会返回true,
在PHP扩展函数( bbs2www/phplib/phpbbs.board.c line 260 )
PHP_FUNCTION(bbs_safe_getboard)函数中,
使用了public_board函数来判断版面是否有权限读,
这样一些限制读取权限但 PERM_DEFAULT 可以访问 的版面,
理论上应该是wwwguest不可以访问,
但实际上这时却是wwwguest可以访问了,这应该算是bug吧?
主要是会导致有些站原来打算不让搜索引擎抓的版面也可能会被抓去了
附pubilc_board原源代码:(libBBS/boards.c line 1306)
/* etnlegend, 2005.10.03 */
/*
发信人: flyriver (江~~忙碌生活), 信区: ****
标 题: Re: 小bug吧 (转载)
发信站: 水木社区 (Mon Oct 3 11:10:18 2005), 站内
我认为改动 normal_board() 这类的函数要慎重,
如果测试不够充分就容易造成信息泄漏。
normal_board() 最初好像是为了避免内部版面也过滤关键字编写的,
现在的用途已经大大扩展,所以还是得小心。
*/
int public_board(const struct boardheader *bh){
//有身份限制或者有俱乐部读限制
if(bh->title_level||bh->flag&BOARD_CLUB_READ)
return 0;
//无权限限制或者限制发表权限或者限制读取权限但 PERM_DEFAULT 可以访问
if(!(bh->level)||bh->level&(PERM_POSTMASK|PERM_DEFAULT))
return 1;
//其余情况
return 0;
}
int normal_board(const char *bname){
const struct boardheader *bh;
if(!(bh=getbcache(bname)))
return 0;
return public_board(bh);
}
【 在 Debian (etch) 的大作中提到: 】
: 讨论区属性里面想设置读权限,也就是有某些版面只想给注册帐号看不给guest看,设置讨论区的读权限设置后(比如设置只有post权限的可以读),telnet/ssh下guest不可见版面,生效;但是web下面版面还是可读的,没生效。不知道是不是一个bug
: kbs是4月份的cvs代码。
--
FROM 58.41.93.*