Slide 50
Slide 50 text
Blade (SSR) + Vue.js での脆弱性
• mustache injection 対策案 (3)
– “{{” や “}}” の文字間に半角空白を挿入する
• “{” や “}” のエンティティ表現に対しても同様に処理
が必要
↓
• “{”、“{”、“{” のうち 2 つの組み合わせ
• “}”、“}”、“}” のうち 2 つの組み合わせ
• さらにそれらが連続している場合でも漏れなく空白を
入れる必要がある
50
サーバーでの処理
{{{{{ … }}}}}
危険な文字列:
{ { { { { … } } } } }
無害な文字列:
$replacementMap = [
"{{" => "{ {"
, "{{" => "{ {"
, "{{" => "{ {"
, "{{" => "{ {"
, "{{" => "{ {"
, "{{" => "{ {"
, "{{" => "{ {"
, "{{" => "{ {"
, "{{" => "{ {"
, "}}" => "} }"
, "}}" => "} }"
, "}}" => "} }"
, "}}" => "} }"
, "}}" => "} }"
, "}}" => "} }"
, "}}" => "} }"
, "}}" => "} }"
, "}}" => "} }"
];