「画像ファイル」に「.svg」ファイル拡張子を追加

私が利用しているDiscourseフォーラムの1つでは、デフォルト設定で「画像ファイル」のみが許可されています。しかし、.svgファイルは「許可されていません」と表示されます。.svgファイルは画像ファイルですが、ラスター画像ではなくベクター画像であるため、品質を損なうことなくスケーリングできます。また、.pngファイルを.svgファイルに変換した際、サイズも同等かそれ以下でした。

  • .pngファイルのサイズは8190バイトでした。
  • .svgファイルのサイズは4273バイトでした。

では、.svgファイルが画像ファイルとして扱われない理由は何でしょうか?

「いいね!」 2

管理者が許可されるファイルの種類を設定します。SVGはデフォルトでは含まれていませんが、authorized_extensions設定から追加できます。管理者に尋ねてみて、検討してもらえるかもしれません。

「いいね!」 5

問題は、管理者がダイレクトメッセージを無視することです。引用すると次のようになります。

そして、彼らはフォーラムのスレッドの99.9%を無視しています。

「いいね!」 2

そのようなリクエストができる#site-feedbackカテゴリはありますか?それとも、フォーラムの/aboutページにあるメールアドレスから連絡できますか?

「いいね!」 1

これは、ファイルがサニタイズされない限り、潜在的なセキュリティリスクではありませんか?

「いいね!」 1

その完全な答えは分かりませんが、アップロードの一部としてディスコースが何らかのチェックを行っていると思います。

「いいね!」 2

それはここで解決できる問題ではありません。フォーラムの運営方法が気に入らないのであれば、それを使わないか、自分で始めるかのどちらかです。

「いいね!」 4

@pfaffman、それは次のようなものだと思います。 sensible defaults(合理的なデフォルト設定)は、労力の重複を減らすことを意味します。他の人が行ったように、すべての管理者にSVGアップロードを有効にするように依頼することもできます。

…または、Metaにデフォルトとして設定するように依頼することもできます。その点については、@Ondrashek06に同意します

4年後、私も完全に同意します!

「いいね!」 3

@pfaffman、ありがとうございます!

「いいね!」 1

理解できない理由で、デフォルトで含めるのが悪い考えである可能性がわずかにあります。:person_shrugging:

「いいね!」 1

@pfaffman、サニタイズ処理だと推測します。非常に強力なフォーマットだからです。しかし、インラインHTMLがサポートされており、他のフォーラムではSVGがサポートされていることを考えると、特にここで許可されているように見えることを考えると、乗り越えられないものではありません。

デモンストレーションとして、以下はSVGです。

「いいね!」 1

それで…

SVGはサニタイズ(無害化)されます。

コードを読んだ当時、サニタイズはかなり堅牢だと判断し、自分のサイトで有効にすることに自信を持っていました。

CDCKが皆のためにその判断をする責任を負いたくないというのは理解できます。特に、サニタイズされたSVGはSVGのすべてのニーズを満たすわけではないためです。たとえば、私のサイトでは、レーザーカッター用のSVGが投稿されることがあり、そのサニタイズで適用された変更が、その目的のためにサイレントに破損してしまうことがあります。

そのため、設定を行っていた際にはわずかな手間でしたが、デフォルトで有効にすることにためらいがあることは理解できます。

「いいね!」 3

@mcdanlj、Blenderは、おそらくプラグインを介して、ファイルアップロードを許可します。これはデフォルトでは適用できませんが、SVGが主にインラインレンダリング以外の用途であるため、フォーラムに役立つ可能性があります。

「いいね!」 1

私の場合は、時々両方の動作が必要になります。そのため、バイト単位で完全に一致することが重要なZIPファイルをアップロードしてもらうことになります。10回中9回は、サニタイズされたとしても、ダウンロードせずにオンラインで表示できる方がはるかに便利です。

(はい、私たちは欲張りになりたいのです!:rofl:

@mcdanlj、サニタイズされていないインラインSVGをレンダリングすることが理論的に可能かどうかさえ、私は確信が持てません。

インラインSVGをサニタイズしないことによるCSS攻撃についてではありません。

アップロード時に、サニタイズして表示用SVGにするか、レンダリングせずにアップロードのままにするかを選択できるようにしたいということです。しかし、実際には、サニタイズされたインライン表示が最も理想的ですが、ダウンロードをクリックすると元のサニタイズされていないバージョンを取得できるのが完璧です。

これは真剣な機能提案ではありません。単に、1つの特殊なユースケースにとって完璧なものになるだろうということです。:smiley:

「いいね!」 1

@mcdanlj、なぜなら、Blenderのファイルアップロード機能はプラグインによって提供されると信じているからです。もしあなたもそうであれば、プラグインのリポジトリのissue trackerにFRとして投稿する価値があるでしょう。もし、それがコアに含まれているのであれば、本当に便利だと思いますが、別の投稿で追跡する方が良いかもしれません。

@pfaffmanさん、ありがとうございます。この件をチームに共有したところ、デフォルトとして適切であるとの意見で一致しました。PRを承認し、マージしました :slight_smile:

「いいね!」 2