LoginSignup
2
1

More than 3 years have passed since last update.

Redmine-Markdownで文字色指定を有効化する(セキュリティリスク有の暫定対処)

Posted at

背景

Redmineでは、テキストをMarkdown、または、textileのいずれかでパースし、表示できる。
Markdownの方が資料数が多く、また、他システム移行性が高いことから、Markdown記法を利用したい。
しかし、textileには文字色指定記法(%{color: red}target%)が存在する一方、Markdownには存在しない。
MarkdownはInner HTMLを許容することから、spanタグによる文字色指定(<span style="color: red">target</span>)を試みた。
しかし、文字色指定に失敗した。
RedmineでMarkdownでのパースを指定した場合に、文字色指定を有効化したい。

環境

  • Redmine: 4.0.4-stable

暫定対処

REDMINE_DIR/lib/redmine/wiki_formatting/markdown/formatter.rbにおける、
Redmine::WikiFormatting::Markdown::HTMLクラス初期化時に、:filter_html => falseを指定すればよい。

Redmine::WikiFormatting::Markdown::HTML.new(
+              :filter_html => false,
-              :filter_html => true,
              :hard_wrap => true
            )

ただし、上記方法では全HTMLがフィルタされない。このため、XSSのリスクが高まることに注意が必要。
上記方法の適用は利用ユーザを限定できる場合にとどめておくべきである。

恒久対処案

RedmineのはMarkdown formatterにRedcarpetを採用している。
Redcarpetに手を加え、textileの文字色指定記法を取り込んだ独自フォーマッタを作れば、
HTMLはフィルタしつつ、文字色指定も実現できるだろう。

補足

Redmine.orgのMarkdown formattingに関するWikiページでstyleタグが有効であるかのように記載されているため、
著者の環境による問題である可能性も考えられる。

参考

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1