从魔兽世界和3dmax中看“安全代码”设计
魔兽世界
在魔兽世界中,可以通过插件来增强游戏界面,官方同样通过lua调用接口来实现游戏的操作界面。
在游戏的提供的接口中,大致分安全函数和普通函数。
普通函数允许官方调用和用户调用,
安全函数则只允许官方调用或对游戏平衡等影响不大的情况下调用
那我猜测他应该是怎么做的?
在魔兽每次发布版本时,应该将自家的脚本进行了hash记录,在调用时如果源不在自己记录的hash内则标记为不安全,直接将目标脚本禁用。
3dmax
在2017年前后,3dmax病毒爆发,病毒脚本可以嵌套在3dmax的场景文件中,并在用户打开场景时执行。
后续,3dmax官方发布了自己的防病毒策略,其中之一便是:如果执行的代码段调用了某些函数并被认为是不安全的则对其抛出异常。
那我认为他应该是怎么做的?
3dmax将自生发布的脚本和自启动目录等位置的脚本默认视为安全,如果在场景内执行的脚本,则仅允许调用普通函数,写文件访问网络等操作将直接触发异常。
在执行脚本的函数中(比如 execute),开发者可以指定标记接下来的所有内容以什么样的安全性进行执行,
当第一个execute标记后,后续嵌套的execute标记将以第一个为准。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2020-09-29 Maxscript 禁止将脚本放置在max根目录运行