MicroBin v2.0.4 更新: 权限控制仍然需要改进
前言
很久之前就在找 Pastebin 的自托管替代品, 当时左找右找也只有找到一个 PrivateBin, 但是看到 PHP 我就开始有点害怕了, 试用过后感到这个程序反应也有些迟钝(但实际上这个程序的功能, 特别是权限控制上比较完善).
最后找到的是 MicroBin, 数个月前发布的 1.x 版本使用过后喜欢上了它的轻量, 但可惜当时的 MicroBin 功能缺失, 权限管理也非常不成熟, 虽然通过 "一些方法" 可以做到基本上的权限控制让它勉强能用了, 但始终是无法适应大部分的使用场景.
"一些方法": 1.0 时期有很多改进功能的合并请求, 但是项目负责人就是不通过合并. 于是只好手动去 fork 了源代码合并了 129 号请求, 才得以避免任何人都能删除条目的问题, 做到了最基本的权限控制. (为什么会被设计成任何人都能删除条目啊? 啊?)
勉强运行一段, 不, 一大段时间后, 最近几天他终于开始发 2.0 beta 了. 一连被好几个 beta 版本轰炸邮箱之后, 好在是前天终于憋出来 2.0 正式版 v2.0.4 了.
高兴之余那就是赶紧试试新版的 MicroBin 到底怎么样, 当然结论就如标题所述: 权限控制依旧是最大的问题.
更新了什么
官方实例: https://pub.microbin.eu/
UI 改进
这应该是最直观的感受了, MicroBin 有了全新设计的 Logo... 额, 好像也只有这点了...🙂
实际上 UI 和 1.0 版本时期几乎一摸一样, 下面是我 1.0 时期部署后自定义选项的版本:
选择去掉了页眉和 Logo, 所以实际上原来的 1.0 和现在 2.0 实际上一模一样, 当然除了新画的 Logo.
管理员后台
2.0 版本的更新加入了一个路径在 /admin
中的管理员后台, 登录后可以看到一些全局信息, 比如:
有读者可能好奇: "啊? 为什么你的 MicroBin 是中文的界面语言啊?"
是因为 CX 我自己在 v2.0.4 版本更新后部署前自己改源代码汉化成了中文... 肯定不是我英语水平的问题, 不管怎么样看着自己母语的界面语言就是比较好一点(虽然用习惯了都一样).
双端加密
2.0 加入了客户端和服务端加密, 于是对应的选择条目的隐私选项的时候就多了几个选项:
使用到加密的选项是 Private 和 Secret 模式, 前者是仅服务端加密, 后者是端对端加密. 端对端加密应该不用再赘述, MicroBin 在浏览器端通过 JavaScript 进行一次客户端加密条目内容后再传输至服务器, 服务器再经过一次加密后最后存进数据库里.
据称附件也会经过加密, 没试过, 谁知道呢.
链接重定向
简单来说就是短链接的功能, 用 302 跳转实现. 具体操作参照指南中的描述:
Did you know that MicroBin can act as a URL shortener?
Simply paste the url into the Content field and save it.
You will be redirected to your upload's page, where you can see > the destination URL and will see a "Copy Redirect" button. Press > that to copy MicroBin's redirection link, which will look > something like this:
https://pub.microbin.eu/url/bear-mouse-turkey
Opening this link will simply redirect you to your original URL.
简单来说就是:
在粘贴框内输入一个链接后保存条目, 即可通过左上角 "复制重定向" 按钮获得一个 302 重定向到条目内容链接的链接.
这个功能实际上有点背离粘贴板用途, 但就论新功能而言, 也值得单独拿出来说一下.
强化权限控制
权限控制是我一直以来很在意的问题, 1.0 版本存在的最严重的问题就是缺失的权限控制, 现在 2.0 版本终于得到了一些改善.
除了 1.0 版本就存在, 现在也没有什么变化的 Public 和 Unlisted 模式, 新版增加了 Read-only 模式. 在这个模式下需要为条目设置密码, 对条目查看的时候不需要验证密码, 但是对条目进行修改和删除的时候就需要验证密码了. 这一点做得很不错, 基本上满足了我对基本权限控制的要求, 但是给访客放下这种权限的时候, 却没有给网站管理员放下更高的用于压制这种权限的权限.
正所谓 "魔高一尺道高一丈", 当 "魔" 真的有一尺的时候, 你作为网站管理员的 "道" 最好能真的有给我 "高一丈" 的能力, 可惜这个 2.0 版本没有考虑到这一点: 当条目创建者使用 Read-only 模式创建条目后, 其使用的密码是会在服务数据库中加密存储的, 因此管理员没办法知道访客创建的条目密码是什么, 所以作为管理员即使能够登录后台, 能够看到没有分享过的条目标识, 但管理员要删除这个条目的时候却依旧要使用访客设置的密码才能删除.
可能会有读者怀疑我的动机有问题: "啊? 你为什么要随便看还想随便删别人的东西?"
对于这种问题, 我只能说: "作为网站管理员我有权限也有义务治理服务滥用, 如果不喜欢我这个网站管理员的做派或者是想体验一下作为清道夫的感觉, 那建议换一个网站或者自己去托管一个网站试试."
这个问题依旧是权限控制上的问题, 我也在项目上提了 issue, 希望在某个版本能够被改进一下, 不然这管理员光有能看的眼睛可不太行, 还的要有能干活的手.
就以我个人托管的实例来说, 如果没办法治理滥用, 那在考虑维护数据持久化之后限制上传是有必要的, 毕竟即使是有效期最长不过 1 周, 垃圾回收时间也只有 90 天的实例, 切换到 SQLite 数据库之后我也不想要通过操纵数据库才能删垃圾内容, 即使是从来没有发生过, 但这的确是会发生且难以解决的事情.
其他质量更新
- 支持且默认启用 SQLite 数据库.
- 客户端实现的语法高亮.
- 多媒体附件嵌入式预览.
- 可限制附件上传尺寸.
- 新增了指南(Guide)页面.
后话
v2.0.4 作为 MicroBin 2.0 的第一个正式版还是能看出这个项目有在稳步前进的, 并且项目的官网也放上了 MicroBin 商业版的 waitlist:
这是好的, 说明项目负责人有计划把这个项目发展到足以应付商业需求.
但对于现阶段的 MicroBin 来说, 目前的功能连我这种业余用户的需求都难以满足, 那么对于那些对信息安全和信息治理及预防有更高要求的商业客户, 估计是现在这个完善程度的 MicroBin 难以满足的.
不过 MicroBin 已经可以看到在前进了, 期待它会有更好的表现.😀
相关链接
- MicroBin 源代码仓库: szabodanika/microbin: A tiny, self-contained, configurable paste bin and URL shortener written in Rust. (GitHub)
- MicroBin 项目官方网站: MicroBin
- MicroBin 官方托管实例: https://pub.microbin.eu/
- CXPLAY 部署的一个汉化版测试实例: https://bin.512321.xyz/
不保障数据持久化.