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

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です