グローバル通知にHTMLは使用できません

このトピックは Discourse チームによって解決されました。アーカイブ目的のため元のトピックは残しておきますが、これは @Roman とチームによって解決済みです。


最近 SMTP 設定を更新するために Discourse を再構築したところ、グローバル通知の HTML タグがそのまま表示されるようになりました。

タグが表示された状態は以下の通りです:

Welcome to the NEW Real Racin' USA Motor Sports Forums!


Your prayers and wishes have been answered.

We've prepared a faster, newer, and easier-to-use forum experience for you, copying everything over from the old forum into this one. All of your topics, posts, and user profiles have remained intact, just as you left them!

Please read our "I Want My Account Back!" post for instructions on how to get back into your account.

Now that the dust has mostly settled, we're still checking this forum to ensure it is working properly for everyone.

For all updates on the forum and to get assistance, visit the Sunshine State Racing Facebook page.

しかし、再構築後は以下のように表示されます:

最近のコミットで、この機能を無効化するグローバル通知の変更が見つかりました。

さて、現在、グローバル通知にリンクを含める方法はありますか?

私の代替案は、投稿を作成してバナートピックとして固定することでした。

はい、グローバル通知のサイト設定には HTML は含めず、プレーンテキストのみを許可するように変更しました。これは、他のユーザー入力と同様に扱い、サニタイズ処理を適用したためです。

前述の通り、回避策としてはバナートピックを使用することをお勧めします。

それは残念ですね。とても役立ちました。

ご説明いただき、ありがとうございます。

ええと、私の意見ですが、これら 2 つは目的が非常に異なります。

グローバルバナーには明確な目的があります。つまり、フォーラムで重要なトピックについて通知したい場合です。ユーザーがバナーを閉じると、その設定は維持され、グローバル通知があれば本来表示されるはずの更新を見ることができなくなります。

はい、緊急時に非表示にできないバナーが非常に有用であることを認識しているため、この設定を維持することにしました。ただし、サニタイズされていない HTML を許可することは、潜在的に危険です。

グローバル通知を設定する権限を持つ人は、テーマコンポーネントを作成する権限も持っていますか?つまり、ここに追加の攻撃ベクトルはないのでしょうか?

明確に申し上げますと、この設定を更新できるのは管理者のみであるため、セキュリティ上の問題とはみなしていません。これは、サイト設定での HTML の使用を禁止し、これをサポートするために設計された他のツールを使用するという継続的な取り組みの一環です。

HTML を許可する理由を説明させてください。私は投資家向けのフォーラムを立ち上げているクライアントと作業しています(偶然にも、クローズドベータは昨日開始されました)。彼らの法務チームは免責事項の掲載を強く求めており、それは以下の条件を満たす必要があります:

  • フォーラムのすべてのページで目立つように表示されること。
  • 消去できないこと。

つまり、グローバル通知です[1]

例として(私が作業しているサイトではありませんが、同様の分野のサイト)、Freetrade の免責事項をご覧ください。重要なのは、法務部門は通知に HTML が含まれているかどうかを気にしていないということです。彼らが求めているのは、通知が存在し、ユーザーが「見ていなかった」と主張できないようにすることだけです。

残念ながら、この通知は大きなテキストの塊であるため、見た目があまり良くありません。幸いなことに、法務部門はフォントを小さくし、完全な免責事項へのリンクを含めることに同意しています。チームは先週、免責事項へのリンクを含むコピーを法務部門に提出しました。しかし今週、グローバル通知にはもう HTML が許可されていないことが判明しました。まあ、面白いことになりましたね。

一方、この機能を本来の目的(「すべての訪問者への緊急、緊急、消去不可能なグローバルバナー通知」)に使用する場合、ステータスページや詳細を確認できる他の場所へのリンクを貼る方法があるのは非常に便利だと思いませんか?

しかし、これは実際には「他のユーザー入力」とは言えませんよね?これはサイト設定であり、ごく少数の人しか変更できません。サイト所有者の視点から言えば、これはユーザー入力ではなく、ユーザーに提供されるインターフェースの一部です[2]

その理由についての説明はどこかにありますか?もし、リンクを許可する消去不可能なグローバルバナーに対応する別のツールを開発中なら[3]、いつ完成するか教えていただければ助かります。可能であれば、カスタマイズを設定する必要を避けたいと考えています。

少し短気な印象を与えてしまったらすみません。この変更が来ることは知らされておらず、私たちが困った立場に置かれています。コミュニティは来週、より広い層に公開される予定でしたが、この変更がその計画に水を差す形となりました。



  1. この機能の誤用だという議論も成り立つとは思いますが、もしこの機能を独自に構築する場合、それはグローバル通知と全く同じように機能するはずです :man_shrugging: ↩︎

  2. Discourse の視点からすれば、管理者もユーザーであることは理解しています。ただ、このケースではそのような考え方は少し違和感があります。 ↩︎

  3. スタイリングについても同様ですが、それは二次的な問題です。 ↩︎

この対応の主な理由は、データベースエントリの保護のためです。特に、以前使用していた古いフォーラムでエンコーディングの問題が発生していたことがきっかけです。

そのフォーラムでは絵文字が &# 形式に変換され、引用されると変換時に「utf-8 の無効なバイトシーケンス」というエラーが発生しました。その結果、フォーラム上では絵文字が � という記号として表示されてしまいました。

将来的なアップデートで HTML タグにも同様の問題が発生し、データベースに不具合が生じてコミュニティ全体が使用不能になる可能性を懸念しました。

コードに詳しい方であれば、本番ブランチへのマージやダウンロード/アップデート前に各修正が複数のチェックを経るため、このような問題は起きないだろうと安心させることができるかもしれません。Discourse チームは、オンラインコミュニティを希望するすべての人にとって、自己完結型で問題のないワンクリックソリューションとなるよう努めており、その点では非常に優れた成果を上げています!

それでも、新しい解決策が公開されるまでの間、私の簡易的な対応で十分機能しています。また、バナートピックを閉じられるようになったことで、画面の散らかりが減ったのも嬉しい点です。

ご不便をおかけして申し訳ありません。閉じられないバナーを作成するには、こちらのテーマコンポーネントをご覧ください。

これはグローバル通知よりもはるかに強力かつカスタマイズ性が高いです。

グローバル通知設定での HTML サポートを再度有効化しました。スムーズな移行を保証するより良い方法を見出すため、検討を進めています。

グローバル通知フィールドの下の説明文には、以下のように記載できます。

「HTML サポートは今後のバージョンで削除されます」

また、無効化された後も、説明文には「HTML 許可」と表示されていました。

@Roman_Rizzi グローバルお知らせ付きのリリースはいつ公開されますか?

この件については協議し、グローバル通知設定におけるHTMLサポートを維持することを決定しました。そのため、近々廃止されることはありません。

では、何が不足しているのでしょうか?なぜ 私たちのフォーラム では動作しないのでしょうか?

Discourse をアップグレードしてください。数日前に再有効化されたため、アップグレードを実行すれば解決するはずです。

超高速な返信をありがとうございます!アップグレードしましたが、まだ動作しません(HTMLが表示されています)。