QiitaでFont Awesome諸々が死んだ ユーザーインプットフィルターの導入

死にましたね。
見出し装飾勢だったので悲しいです。
Font Awesome含めた一部HTMLタグの利用は昔からあるTipsでしたし、問題の回転のfa-spinも2015年とかそこら辺から記事としてありましたし。
脆弱性と言われてえー(・_・;)と思ったものの、記事全体を覆う装飾とかも出てあー…て。
悪ふざけのとばっちり感ありますね。


ルビとかも死んだかなと思ったらそうでもない様子。
[Qiitaのコードにコピーボタンを追加するユーザースクリプト - Qiita]

そう言えばここらへんのプログラムは公開されていたなーと思い出したので、軽く見ます。

[Qiitaのリンクと注釈のMarkdown記法の差異 ソースコードを見ながら - Qiita]


[increments/qiita-markdown: Qiita-specified markdown processor.]

やっぱり最近更新されています。
よくわからないけどイケイケの企業だし？プルリク駆動？みたいな？をしているんだろうとcloseのプルリク見てそれらしいの。

[Add `:strict` context for stricter sanitization by yuku-t · Pull Request #46 · increments/qiita-markdown]

私は英語が読めないのでさっぱりですが、やっぱり脆弱性でリスキーとおっしゃられているみたい？

で、どうやらフィルターとして

[qiita-markdown/user_input_sanitizer.rb at 9625eec4de20bffc8c1e6ca03d09035f3898775a · increments/qiita-markdown]
~~と
qiita-markdown/final_sanitizer.rb at 9625eec4de20bffc8c1e6ca03d09035f3898775a · increments/qiita-markdown~~
**追記:誤報でした。編集リクエストありがとうございます。**
が追加されたそうな。

私は英語も読めないがrubyも読めない。雰囲気でプログラマをしている。
よってコードの雰囲気を読むに、これはタグと属性と属性の値のホワイトリストに見受けられた。
0.19.1では`<div>`の`class`のサニタイジングが漏れていた点が修正されている。

[Add missing sanitization for `<div>` class attribute · increments/qiita-markdown@82a74aa]

ひとまず**user_input_sanitizer**を見てみる。(検証はしてません。)

タグ|  属性|  値|   備考|
:-:|:-:|:-:|:-:
(CSS)||       text-align|  テーブルのため？|
(script)|||            削除|
a|   class href rel title|    "href" => ["http", "https", "mailto", :relative]<br>"class" => %w[autolink]<br>"rel" => %w[footnote url]<br>"rev" => %w[footnote]|   サイトリンク・脚注|
b|           ||
blockquote|  cite class |    "cite" => ["http", "https", :relative]<br> "class" => %w[twitter-tweet]|  引用元<br>0.20でclass追加<br>参考:[QiitaでTwitterのツイートを埋め込める時代は終わりました→再び訪れました - Qiita]<br>(公式と交流できるならマストドン面白そうですね)
br|          ||
code|    data-metadata|       |
dd|          ||
del|         ||
details|         ||
div| class|   "class" => %w[footnotes]|    脚注ボックスのクラス|
dl|          ||
dt|          ||
em|          ||
font|    color|       |
h1|  id|      |
h2|  id|      |
h3|  id|      |
h4|  id|      |
h5|  id|      |
h6|  id|      |
hr|          ||
i|           ||
img| alt height src title width|      |
input|           ||
ins| cite datetime|       |
kbd|         ||
li|  id|  "id" => /\Afn\d+\z/| 目次？|
ol|          ||
p|           ||
pre|         ||
q|   cite|    "cite" => ["http", "https", :relative]|  引用元|
rp|          ||
rt|          ||
ruby|            ||
s|           ||
samp|            ||
strike|          ||
strong|          ||
sub|         ||
summary|         ||
sup| id|  "id" => /\Afnref\d+\z|   脚注ボックスへのアンカー|
table|           ||
tbody|           ||
td|  colspan rowspan style||       styleはおそらくCSSルールが適用されてtext-alignのみ|
tfoot|           ||
th|  colspan rowspan style||       styleはおそらくCSSルールが適用されてtext-alignのみ|
thead|           ||
tr|          ||
ul|          ||
var|         ||


classとstyleがほぼ禁止されている。
なので、Font Awesomeはもとよりbootstrapもお亡くなり。
font colorが許されているのは優しさ？シンタクスハイライト？

とにかく、凝った表現は難しそうです。

# 結び

ちらっと見た記事だけで言えばこうなるのもやむなし。
が、この記事はフィルターへの批判ではないです。
今可能な表現方法で、ぜひとも記事が見やすくなる工夫が生まれることを願ってのリスト化でした。
Qiitaユーザーの健全な創意工夫を楽しみに待っております。

…絵文字機能の強化でもいいんですよ？

<!-- -->

[Qiitaのリンクと注釈のMarkdown記法の差異 ソースコードを見ながら - Qiita]:http://qiita.com/khsk/items/0ae031973d7077f67c82

[Qiitaのコードにコピーボタンを追加するユーザースクリプト - Qiita]:http://qiita.com/khsk/items/27a80755d883521ecd73

[Add `:strict` context for stricter sanitization by yuku-t · Pull Request #46 · increments/qiita-markdown]:https://github.com/increments/qiita-markdown/pull/46


[increments/qiita-markdown: Qiita-specified markdown processor.]:https://github.com/increments/qiita-markdown

[qiita-markdown/user_input_sanitizer.rb at 9625eec4de20bffc8c1e6ca03d09035f3898775a · increments/qiita-markdown]:https://github.com/increments/qiita-markdown/blob/9625eec4de20bffc8c1e6ca03d09035f3898775a/lib/qiita/markdown/filters/user_input_sanitizer.rb

[qiita-markdown/final_sanitizer.rb at 9625eec4de20bffc8c1e6ca03d09035f3898775a · increments/qiita-markdown]:https://github.com/increments/qiita-markdown/blob/9625eec4de20bffc8c1e6ca03d09035f3898775a/lib/qiita/markdown/filters/final_sanitizer.rb


[Add missing sanitization for `<div>` class attribute · increments/qiita-markdown@82a74aa]:https://github.com/increments/qiita-markdown/commit/82a74aa8a7fcedb9b2a7da92607fe4d692d5915f


[QiitaでTwitterのツイートを埋め込める時代は終わりました→再び訪れました - Qiita]:http://qiita.com/yumetodo/items/bb710bc890e6dd50b9e1