選択ボックス オプションの js.erb テンプレートを更新 - XSS を安全に処理し、テキストを正しく表示します
P粉674757114
P粉674757114 2024-03-31 00:36:22
0
1
618

Rails アプリケーションで .js.erb ファイルをレンダリングしています。このファイルでは、選択ボックスのオプションを更新しています。

最も重要なことは、XSS 安全な方法で実行することです。このスタック オーバーフロー ソリューションに基づいて、OWASP DOM ベースの XSS 防止チートシートを参照して、次の方法で選択ボックスのオプションを更新します。

1つ試してみる リーリー

  • 問題: blog.name の表示テキストは HTML エンコードされています。たとえば、「Johnson & Johnson」のテキストは「Johnson & Johnson」となります。アポストロフィなどの他の特殊文字にも同じ表示の問題が発生します。

2 つ試してみる

Rails に

html_safe メソッドがあることは知っていたので、それを使ってみました。 "<%= blog.name %>";" < ;%= blog.name.html_safe %>";

  • 問題: blog.namealert("Gotcha"); に設定して XSS をテストすると、次のエラーが表示されます: option at all has更新されていません。結局のところ、問題は、このコンテキストで html_safe を使用すると、アプリケーションが二重引用符をどうすればよいのかわからないことのようです。

3 つ試してみる

この方法は

効果的だと思われます。オプションが更新され、表示テキストは正常に機能しますが、表示テキスト alert("gotcha"); を持つオプションはテキストとして表示されるだけで、コードとして実行されません。 リーリー

    質問:
  • これが安全かどうかわかりません。 j (escape_javascript のエイリアス) は安全ではないという記事を見たので、よくわかりません。
  • 安全かつテキストを正しく表示する方法で、
.js.erb

テンプレートから選択オプションを更新する方法が不明です。

P粉674757114
P粉674757114

全員に返信(1)
P粉594941301

私の理解を伝えてみてください:

  • 1つ試してみる

特殊文字を デコードすることはできますが、これは Rails の方法ではありません。

    2つ試してみる

html_safe は文字列の結果が安全であることを保証しませんが、文字列内の HTML タグを HTML 形式で表示できるように文字列が安全であることを明示的に指定しているため、問題は解決されません。 XSS の問題。 リーリー

    3つ試してみる
この記事

によると、escape_javascript を一重引用符または二重引用符で囲んで使用しても安全です。 リーリー したがって、試行 3 は XSS 安全で Rails の方法であるため、推奨されます。

コードは次のように簡略化できます:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート