LoginSignup
24
6

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-06-19

死にましたね。
見出し装飾勢だったので悲しいです。
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]
"class" => %w[autolink]
"rel" => %w[footnote url]
"rev" => %w[footnote]
サイトリンク・脚注
b
blockquote cite class "cite" => ["http", "https", :relative]
"class" => %w[twitter-tweet]
引用元
0.20でclass追加
参考:QiitaでTwitterのツイートを埋め込める時代は終わりました→再び訪れました - Qiita
(公式と交流できるならマストドン面白そうですね)
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ユーザーの健全な創意工夫を楽しみに待っております。

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

24
6
1

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
24
6