文字MUD游戏论坛-天下泥潭群英会-水泊梁山  

返回   文字MUD游戏论坛-天下泥潭群英会-水泊梁山 > 西游之旅 > 『 巫师天下 』

『 巫师天下 』 学习如何挂MUD,如何制作MUD。讨论如何管理好一个MUD,做好一个巫师。

发表新主题 回复
 
LinkBack 主题工具 主题评分 显示模式
旧 2011-12-03   #1
高级会员
级别:6 | 在线时长:109小时 | 升级还需:31小时级别:6 | 在线时长:109小时 | 升级还需:31小时级别:6 | 在线时长:109小时 | 升级还需:31小时
 
Odysseus 的头像
 
注册: 08年04月11日
来自: 盘丝洞
帖子: 311
声望力: 20
声望: 50 Odysseus 初领妙道
现金:29两梁山币
资产:1245两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0
关于mudlib安全性的考虑

发信人: windeye (风眼), 信区: Mud_Builder
标 题: 关于mudlib安全性的考虑
发信站: 逸仙时空 Yat-sen Channel (Sat Oct 17 18:21:53 1998), 站内信件

*******
等级安全
*******


1.使用author_file来表示object的等级,也就是object等级只与其目录有关系(?)

2.不对this_player()做等级验证(user->save()的例子)

3.对previous_object_list(previous_object(-1))做等级检查,取除this_player()

外最低等级为previous_object的等级,再和this_object做等级检验。


********
安全检查
********

涉及安全方面的包括read,write,exec,destruct,clone

(update = destruce + create)

某些object不允许被低等级者(比如/u目录)destruct和clone(见函数等级检查)

权限控制分为读权,写权,(函数)执行权,destruct权和create权。


**********
读权的控制
**********

读权是基本权限。但读权的控制有可能导致player因其等级低而无法读取

他的data(因此在安全检查时要忽略this_player())。另外要防止的情形是

低级wiz通过写自己目录下的程序来读写高级别文件(因此安全检查是对所有

previous_object的list而不仅仅是previous_object)。


基本上大部分程序是可读的,但/data/user,/data/login目录例外,player

的数据和passwd应该是低中级wiz不可见的。


**********
写权的控制
**********

写权是最重要的安全权限,在现行mudlib里对它的控制不够严密。

对写权的控制体现为:

低级wiz只能通过roommaker写自己的workrom等

中级wiz可使用edit,但只能编辑自己目录下的区域(也就是可以通过限制

他目录下的文件的权限来实现权限控制,即写权控制执行权)

高级wiz可编辑/d,/std,/obj目录

天神级可编辑/adm和/data目录

(实际级别可以再细分)


对写权的控制还有一种特例:

类似edemote,可允许低级wiz通过命令修改一些文件(如emoted.o),

这些文件是供高级别程序读取的(如emoted.c)。这种修改不涉及函数体

的修改,而且容易跟踪,还是比较安全的。


************************
执行权--函数中的等级检查
************************

某些涉及修改玩家属性的函数(如set,add,delete,skill_improve等)

将在执行前检查previous_object_list和this_object()

等级排列为:

wiz(把wiz等级排在比player还低是为了允许qc程序改变wiz属性而不能改变player)

player(即object级)地图 ,obj , npc....等

std(标准级)feature,skills等

master(系统级)daemons,user data及对user data进行操作的文件

adm(最高安全级)甚至连天神都不能修改的文件:主要是一些日志文件

各等级之间的读,写,执行关系待最后确定。


************************
update权(destruct+create)
************************

destruct的权限可在函数执行中控制

至于object的生成,可在master的valid_object里控制

可避免较低级别wiz通过程序生成某些受控制的object(特别是宝物)


******************
一些涉及安全的efun
******************

如exec,ed等都必须禁止valid_override


*****************
命令级的安全控制
*****************

可考虑加入第二密码命令passlock

除login password之外还有一个第二密码passwd2

某些命令,如suicide,kill,abandon等,以及所有wiz命令必须通过passunlock

解锁才能执行。假如不希望别人使用你的机器时用你的mud窗口,可运行passlock

加锁。

第二密码可以用比较灵活的方式:例如是一个8位数字,passunlock时随机询问

其中三个数位数字的和,差,积等......若回答错误则会踢出系统。

当login时自动执行passlock(也就是每次login必须解锁才能执行特定命令)
Odysseus 当前离线  
回复时引用此帖

发表新主题 回复

添加到书签


发帖规则
不可以发表主师
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子

论坛启用 vB 代码
论坛启用 表情图标
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为格林尼治时间 +9, 现在的时间是 00:56.


Powered by SPLS
版权所有 2001-2023 水泊梁山
皖ICP备05012024号

站长 fengyue

Content Relevant URLs by vBSEO 3.6.1