话语签名

我是在这里疯了,还是用户输入的签名图片 URL 根本没有验证?
基本上,用户可以输入任何他们想要的东西,然后会被推送到其他用户?

另外,为什么 URL 签名数据库大小设置为 32_000?
谁需要 32000 个字符的图片 URL?

太诡异了 :ghost:

我修改了 CSS,硬编码了最大高度和宽度;

.signature-img {
  max-width: 600px;
  max-height: 100px;
  width: auto;
  height: auto;
  display: block;
  margin: 5px 0;
}

我在 plugin.rb 中将签名 URL 的最大大小更改为 250

  register_user_custom_field_type("signature_url", :string, max_length: 250)
  register_user_custom_field_type("signature_raw", :string, max_length: 250)

我将此添加到 plugin.rb 中“on(:user_updated) do |user|”的底部(我不会使用高级模式)

    # 如果不在高级模式下,则验证 URL
    if !SiteSetting.signatures_advanced_mode && user.custom_fields["signature_url"]
      url = user.custom_fields["signature_url"]

      # 严格验证:仅限 HTTPS,仅限某些图片文件类型
      unless url =~ /\Ahttps:\/\/\[a-zA-Z0-9.\-\/_]+\.(png|jpe?g|gif|webp)(\?[a-zA-Z0-9=&]+)?\z/
        Rails.logger.warn("[discourse-signatures] Rejected invalid signature_url for user #{user.id}: #{url.inspect}")
        user.custom_fields["signature_url"] = nil
        user.save
      end
    end

如果我在这里做错了什么(以前从未接触过 Discourse),请纠正我并告诉我正确的方法。

1 个赞

因为 250 不够……

这就是签名的全部意义所在。论坛也是一样,人们输入内容,其他人就能看到。真是疯狂的世界,不是吗?

5 个赞

当 Discourse 升级到 3.5.0.beta8 时(3.5.0.beta9-dev 也有问题),发现用户编辑签名后无法保存(尽管显示已保存但无效),在 3.5.0.beta7 上仍然正常。希望尽快修复,因为许多插件从 beta7 到 beta8 都已内置。

2 个赞

我们有一个关于签名的特定用例,我想知道进行一些更改是否相对容易。

  1. 我同意我希望在用户界面中只看到特定组的签名,我对 CSS 不太了解。
  2. 我们将 Discourse 同时用作社区和支持票务系统。是否可以设置一个选项来“仅在 X 类别中显示签名”?

我们实际上只需要在支持部分显示签名,因为我们的大部分互动都是通过电子邮件进行的。

2 个赞

4 个帖子被拆分到新主题:功能请求:在电子邮件通知中包含签名