HTML のエスケープ
参考:
Rails での html の sanitize & escape – Qiita
JavaScript に出力する文字列をエスケープする
文字列を to_json
で JSON 形式に変換して、raw
に渡して出力する。
# output.js.erb let str = <%= raw str.to_json %>
HTML で ERB を使用している場合は、json_escape
で HTML エンティティをエスケープする。
# output.html.erb <script> let str = <%= raw json_escape(str.to_json) %> </script>
参考:
Rail3 の Ajax が非常に鬱陶しい件 | 日常茶飯事
JavaScript のリテラルに任意の文字列を出力してみる | 水無月ばけらのえび日記
Rails の JavaScript 文字列エスケープ | yohgaki’s blog
json_escape – ERB::Util | Ruby on Rails API [Official]
how to maintain Rails html escaping of output · Issue #122 · rgrove/sanitize – GitHub
JSON をエスケープする
オブジェクトを to_json
で JSON 形式に変換して、raw
に渡して出力する。
# user.js.erb let user = <%= raw user.to_json %>
HTML で ERB を使用している場合は、json_escape
で HTML エンティティをエスケープする。
# user.html.erb <script> let user = <%= raw json_escape(user.to_json) %> </script>
参考:
Ruby on Rails で JSON をオブジェクトのまま JavaScript に渡す方法 | 戯言メイテル
json_escape – ERB::Util | Ruby on Rails API [Official]
how to maintain Rails html escaping of output · Issue #122 · rgrove/sanitize – GitHub
カスタムデータ属性のエスケープ
参考:
Rails で ERB から JavaScript に hash を渡す方法 | RE:ENGINES
json_escape – ERB::Util | Ruby on Rails API [Official]
escape_javascript / j
パーシャルのレンダリング結果を JavaScript の文字列として受け取るためにエスケープする。j
は escape_javascript
のエイリアス。
$('#content').html('<%= j render("pages/content") %>')
参考:
escape_javascript – ActionView::Helpers::JavaScriptHelper | Ruby on Rails API [Official]
サニタイズ
参考:
sanitize | Rails ドキュメント (railsdoc.com)
How to sanitize “inline javascript” in ruby on rails? – Stack Overflow
raw
参考:
html_safe、raw、「<%==」の比較 – Qiita
raw – ActionView::Helpers::OutputSafetyHelper | Ruby on Rails API [Official]
ヘルパーメソッドの出力はエスケープされない
参考:
ビューの HTML エスケープは #link_to などのヘルパーメソッドで解除されることがある | TechRacho