- 主题:Re: [KBS]讨论区的读取权限设置在web下无效
我没遇到过,修改过相关部分的代码?
【 在 Debian@bbs.tongji.edu.cn-SPAM.no (etch) 的大作中提到: 】
: hi
: 这个报告的问题大家都没有么?
--
FROM 221.192.237.*
读读代码呗, 看看web检查权限的那部分
【 在 Debian@bbs.tongji.edu.cn-SPAM.no (etch) 的大作中提到: 】
: 没改过啊。不知道新开一个版面是不是也有这样的问题,我的数据是从smth1.2.2转过来的。
--
FROM 159.226.37.*
在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.*
【 在 Dog@bbs.tongji.edu.cn-SPAM.no ( 乐 逍 遥 | 多晒太阳) 的大作中提到: 】
: 在pubilc_board函数(libBBS/boards.c line 1306)中,
: 限制读取权限但 PERM_DEFAULT 可以访问 的时候,也会返回true,
it's a feature
: 在PHP扩展函数( bbs2www/phplib/phpbbs.board.c line 260 )
: PHP_FUNCTION(bbs_safe_getboard)函数中,
: 使用了public_board函数来判断版面是否有权限读,
: 这样一些限制读取权限但 PERM_DEFAULT 可以访问 的版面,
: 理论上应该是wwwguest不可以访问,
: 但实际上这时却是wwwguest可以访问了,这应该算是bug吧?
i don't know if it is a 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);
: }
--
FROM 61.51.120.*
这个对于public_board来讲的确是个合理的feature。
但是PHP的那个函数的那个调用似乎不合理
【 在 fancyrabbit@newsmth.net-SPAM.no (兔兔猫★Initial F★那些故去的如果的事) 的大作中提到: 】
: it's a feature
: i don't know if it is a bug
--
FROM 58.41.93.*
就是说
wwwguest的读取权限判断需要改改,应该只能看到 PERM_BAIC 能看到的版面而不是
PERM_DEFAULT 的?
【 在 Dog@bbs.tongji.edu.cn-SPAM.no ( 乐 逍 遥 | 多晒太阳) 的大作中提到: 】
: 这个对于public_board来讲的确是个合理的feature。
: 但是PHP的那个函数的那个调用似乎不合理
--
FROM 61.51.120.*
我现在是在bbs2www/phplib/phpbbs.board.c中再加个函数,
然后改调用这个函数,可以凑合解决这个问题。
int guest_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;
}
【 在 fancyrabbit@newsmth.net-SPAM.no (兔兔猫★Initial F★那些故去的如果的事) 的大作中提到: 】
: 就是说
: wwwguest的读取权限判断需要改改,应该只能看到 PERM_BAIC 能看到的版面而不是
: PERM_DEFAULT 的?
: ...................
--
FROM 58.41.93.*
最好是 看不到任何读限制的版面,哪怕是PERM_BASIC
【 在 fancyrabbit@newsmth.net-SPAM.no (兔兔猫★Initial F★那些故去的如果的事) 的大作中提到: 】
: 就是说
: wwwguest的读取权限判断需要改改,应该只能看到 PERM_BAIC 能看到的版面而不是
: PERM_DEFAULT 的?
: ...................
--
FROM 58.41.93.*