データベースからフェッチしたデータを表示するときにescape_javascriptを呼び出す必要があります

thebenman

xss_sanatisedデータベースに保存される前のモデルレベルのフィールドがあります。これを表示したい場合escape_javascript、ビューにレンダリングする前にもう一度表示する必要がありますか?

私のクエリは次のようになります

User.all.pluck(:id, :name).map { id: id, name: escape_javascipt(name)}

の代わりに

User.all.pluck(:id, :name).map { id: id, name: name }

<script>alert('hi')</script>データベースに直接挿入すると、実際にはUIで実行されました。SQLクエリを直接記述せずに、その値をデータベースに書き込むことはできませんが。

ではescape_javascript、すべてのフィールドに使用する必要がありますか?

編集

これは、select2を使用してドロップダウンリストとしてUIに表示されます

<div input="hidden" id="input"></div>
jQuery('#input').select2({
    multiple: false,
    data: <%=tech.to_json.html_safe%>,
    initSelection : function (element, callback) {
        callback(<%= esc.to_json.html_safe %>);
    }
});
トムロード

データベースに直接書き込むことによって、独自のアプリケーションのサニタイズルールをバイパスしているという理由だけで、ここで混乱していると思います。

デフォルトでは、ユーザー入力を「信頼」してはなりません。常に潜在的に悪意のあるものと見なす必要があります。

あなたがそれを信頼することを選ぶかもしれない1つの理由は、それが内部ユーザー(例えばあなた自身!)によって供給されているかどうかです。

それとも、あなたがした場合、それがある信頼するように選択することも、別の理由、それをサニタイズそれを永続化する前に-つまり、あなたが明示的に潜在的に悪質な入力をブロックしています。

あなたの「と仮定xss_sanatised」の入力が(あなたがコードを共有していなかったので、私は、確認できない)安全であり、そして、あなたがすることができ、安全なように、ユーザの入力を信頼しています。したがって、ブラウザに直接表示することは問題ありません。

ただし、「SQLクエリを直接書き込む」ことによってデータベースへの安全でない入力を手動で強制すると、当然、上記の「入力は安全である」という仮定は無効になります。しかし、これは「不可能な」シナリオなので、私が特に心配することはありません。

これについて本当に二重に安全にしたい場合は、入力をレンダリングする前に再サニタイズすることができます。しかし、私の意見では、これはおそらくやり過ぎです。(どちらの方法でも、一度だけ消毒する必要があります!)


escape_javascriptは別の方法であり、ユーザー入力のサニタイズとは関係ありません。これは、あなたが説明している問題とは無関係です。

escape_javascriptを呼び出す必要がある場合は、それを選択してください。ただし、ビューレンダリングコードを共有していなかったため、実際に必要かどうかはわかりません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

データベースからデータを取得するためにWebサービスを呼び出すために、データベースのユーザーとパスワードをパラメーターに渡す必要があります

分類Dev

サービスが別のサービスを呼び出すか、それ自体のデータをフェッチする必要があります

分類Dev

データをフェッチすると、状態が設定されていることがわかりますが、状態からデータを呼び出すと、オブジェクトが未定義であることが表示されます

分類Dev

テーブルの従業員IDを使用してmysqlデータベースからデータをフェッチする必要があります

分類Dev

URLを呼び出さずにDjangoモデルからデータをフェッチして表示する方法

分類Dev

Swingログインフォームでデータベースをチェックするために何を学ぶ必要がありますか

分類Dev

EF:OpenConnectionを手動で呼び出すときに、データベース接続を明示的に閉じる必要があります

分類Dev

データをSESSIONに保存する必要がありますか、それとも複数のAjax呼び出しを使用する必要がありますか?

分類Dev

データベースからレコードをフェッチし、ページの読み込み時にサーブレットを使用してjspに表示するためにAjaxリクエストを呼び出す方法

分類Dev

モデルファイルから新しいNSManagedObjectサブクラスを生成するときに、「プリミティブデータ型にスカラープロパティを使用する」をチェックする必要がありますか?

分類Dev

竜巻と非同期のデータベース呼び出しを行う必要があります

分類Dev

ベース仮想デストラクタを明示的に呼び出す必要がありますか?

分類Dev

ベース仮想デストラクタを明示的に呼び出す必要がありますか?

分類Dev

ベース仮想デストラクタを明示的に呼び出す必要がありますか?

分類Dev

データベース(opencart)から列を追加する必要がありますまた問題をチェックするかどうか

分類Dev

AJAXとJSONを使用してデータベースからデータをフェッチして表示するときにinnerHTMLで未定義になる

分類Dev

データバインディングでsetLifecycleOwnerを呼び出すときに、getViewLifecycleOwnerから返されたフラグメントインスタンスまたは所有者を渡す必要があります

分類Dev

REST APIからデータをフェッチするときに、レンダリングが2回呼び出されます

分類Dev

データベースからデータをフェッチし、テーブルに表示します

分類Dev

サービスからデータを取得するためにAjax呼び出しを呼び出すことができません

分類Dev

配列で使用するためにAPIからデータを取得するときに、「メインスレッドからAPIメソッドを呼び出す必要がある」という問題を取り除く方法は?迅速

分類Dev

reactjsでAPIからデータをフェッチするときにエラーが発生しました

分類Dev

node.js mssql javascript メソッドがデータベースからデータをフェッチするための 2 回目の呼び出しで undefined が出力される

分類Dev

DBから必要なデータをフェッチするのに問題があります

分類Dev

html要素が呼び出された/表示されたときにデータベースから値をロードする方法

分類Dev

フラッターで、ステートフルウィジェット/ステートに新しいデータが利用可能であり、再構築する必要があることをどのように知らせることができますか?

分類Dev

Javaの単純なjsonがデータベースからデータをフェッチして表示する

分類Dev

Firebaseデータベースからデータをフェッチしているときに[進行状況]ダイアログを表示する

分類Dev

UITableViewControllerのデータソースとデリゲートメソッドをオーバーライドするときにスーパーを呼び出す必要がありますか?

Related 関連記事

  1. 1

    データベースからデータを取得するためにWebサービスを呼び出すために、データベースのユーザーとパスワードをパラメーターに渡す必要があります

  2. 2

    サービスが別のサービスを呼び出すか、それ自体のデータをフェッチする必要があります

  3. 3

    データをフェッチすると、状態が設定されていることがわかりますが、状態からデータを呼び出すと、オブジェクトが未定義であることが表示されます

  4. 4

    テーブルの従業員IDを使用してmysqlデータベースからデータをフェッチする必要があります

  5. 5

    URLを呼び出さずにDjangoモデルからデータをフェッチして表示する方法

  6. 6

    Swingログインフォームでデータベースをチェックするために何を学ぶ必要がありますか

  7. 7

    EF:OpenConnectionを手動で呼び出すときに、データベース接続を明示的に閉じる必要があります

  8. 8

    データをSESSIONに保存する必要がありますか、それとも複数のAjax呼び出しを使用する必要がありますか?

  9. 9

    データベースからレコードをフェッチし、ページの読み込み時にサーブレットを使用してjspに表示するためにAjaxリクエストを呼び出す方法

  10. 10

    モデルファイルから新しいNSManagedObjectサブクラスを生成するときに、「プリミティブデータ型にスカラープロパティを使用する」をチェックする必要がありますか?

  11. 11

    竜巻と非同期のデータベース呼び出しを行う必要があります

  12. 12

    ベース仮想デストラクタを明示的に呼び出す必要がありますか?

  13. 13

    ベース仮想デストラクタを明示的に呼び出す必要がありますか?

  14. 14

    ベース仮想デストラクタを明示的に呼び出す必要がありますか?

  15. 15

    データベース(opencart)から列を追加する必要がありますまた問題をチェックするかどうか

  16. 16

    AJAXとJSONを使用してデータベースからデータをフェッチして表示するときにinnerHTMLで未定義になる

  17. 17

    データバインディングでsetLifecycleOwnerを呼び出すときに、getViewLifecycleOwnerから返されたフラグメントインスタンスまたは所有者を渡す必要があります

  18. 18

    REST APIからデータをフェッチするときに、レンダリングが2回呼び出されます

  19. 19

    データベースからデータをフェッチし、テーブルに表示します

  20. 20

    サービスからデータを取得するためにAjax呼び出しを呼び出すことができません

  21. 21

    配列で使用するためにAPIからデータを取得するときに、「メインスレッドからAPIメソッドを呼び出す必要がある」という問題を取り除く方法は?迅速

  22. 22

    reactjsでAPIからデータをフェッチするときにエラーが発生しました

  23. 23

    node.js mssql javascript メソッドがデータベースからデータをフェッチするための 2 回目の呼び出しで undefined が出力される

  24. 24

    DBから必要なデータをフェッチするのに問題があります

  25. 25

    html要素が呼び出された/表示されたときにデータベースから値をロードする方法

  26. 26

    フラッターで、ステートフルウィジェット/ステートに新しいデータが利用可能であり、再構築する必要があることをどのように知らせることができますか?

  27. 27

    Javaの単純なjsonがデータベースからデータをフェッチして表示する

  28. 28

    Firebaseデータベースからデータをフェッチしているときに[進行状況]ダイアログを表示する

  29. 29

    UITableViewControllerのデータソースとデリゲートメソッドをオーバーライドするときにスーパーを呼び出す必要がありますか?

ホットタグ

アーカイブ