交易按钮

:warning: 安全漏洞 :warning:

简而言之,安装此插件即使在禁用状态下,也会将所有存在的主题自定义字段泄露给任何可以访问该主题的用户,包括匿名用户。根据您安装的其他插件,主题自定义字段可能包含敏感数据。

~~我们在为客户审查此插件时发现了一些安全问题。我们已经在我们的分支(https://github.com/communiteq/discourse-topic-trade-buttons/tree/master)中修复了这些问题,并提交了一个拉取请求。但是,主题作者没有回复我们的拉取请求或私人消息,因此我们现在披露这些问题。~~

安全修复:信息泄露

所有自定义字段(包括来自其他插件的字段!)都会被序列化,包括对匿名用户。自定义字段可能包含敏感数据,不应如此序列化。

由于 sold_at 等值无论如何都是在服务器端设置的,并且按钮是在 topic.archived 上“计算”的,因此可以将自定义字段逻辑从前端面向用户的代码中移除,并且仅需要为管理员界面序列化自定义字段才能工作——因此序列化可以限制为管理员用户。我们怀疑这甚至不是必需的。

初始化修复

用于隔离序列化逻辑的 if SiteSetting.topic_trade_buttons_enabled 检查使得在启用或禁用插件后必须重新启动 Discourse。此检查是不必要的,因为 Discourse 已经处理了这个问题。
使用 respect_plugin_enabled: false 是不必要的,并且会加剧上述安全问题。

7 个赞