SqlParameters
を使用することは、データベースクエリでSQLインジェクションを防止するために推奨される方法です。これらのパラメータを内部的に消毒するコード/機能は、どこで見つけることができますか?私は私のカスタム実装でこの関数を再利用したいと思います。リフレクターを使って見つけようとしましたが、失敗しました。SqlCommandはどのようにパラメータをサニタイズしますか?
答えて
これはXSSではなくSQLインジェクションから保護されており、は、パラメータデータをサニタイズするコードまたは機能がありません。
保護は、クエリ文字列とは別にサーバーにパラメータ値を送信することによって行われます。その結果、は決してになります。だからではなく、このような何かを実行しているSQL Serverのの
:
SELECT * FROM [table] WHERE [column] = ParameterValue
それはこのような何か走ったかのようにそれはより多くのです:これは、より速く、より安全で堅牢な機能よりも
DECLARE @ParamValue int
-- //@ParamValue variable is populated from the framework in a safe way
SELECT * FROM [table] WHERE [column] = @ParamValue
をパラメータデータを評価する必要があります。このような関数は、custom escape charactersや将来の拡張機能などを処理するためには、非常に複雑な(読み込み:エラーが発生しやすい)必要があります。
この問題は、データがデータであり、コードがコードであり、二度と決して満たされないという問題を完全に解決します。
他、今削除し、答えにあなたのコメント:
私は値オルークに渡すと、それが壊れないようにO''Rourkeように、それをコード化しますクエリ。正しい?
いいえ、正しくありません。変数はデータブロックから直接作成されるため、特別なエスケープやエンコーディングは必要ありません。
OK、感謝します、ありがとう。 "// @ ParamValue変数は安全な方法でフレームワークから読み込まれます"これは安全な方法でどのように埋め込まれますか? –
これはsqlではありません。変数はクライアントから送信された_data_ブロックからSQL Serverによって作成されますが、データセグメントに保存され、コードとしては扱われないため、エスケープまたはエンコードする必要はありません。 –
これに関する詳しい文献は知っていますか?私は本当にプロセス全体を理解したいと思います。 –
- 1. SqlCommandのパラメータはどのように機能しますか?
- 2. codeigniterはどのように入力をサニタイズしますか?
- 3. SqlCommandと比較するにはどのように追加できますか?
- 4. ColdFusionのcfqueryパラメータをプログラムでサニタイズするにはどうすればよいですか?
- 5. SqlCommandのパラメータの明確化
- 6. パラメータでSQLCommandからクエリを完了
- 7. Seamページのパラメータはどのように使用しますか?
- 8. all.equal()のtoleranceパラメータはどのように機能しますか?
- 9. bigqueryのtime_partitioning_expirationパラメータはどのように機能しますか?
- 10. Luigiのパラメータはどのように機能しますか?
- 11. Railsコントローラは手動でパラメータをサニタイズします
- 12. YIIはgetパラメータで入力をサニタイズします
- 13. テキストURLパラメータはどのように機能しますか?
- 14. SqlCommandはパラメータ化されたSQL文を最適化しますか?
- 15. SqlCommandが何も返さないようにします。
- 16. URLにパラメータをどのように渡しますか?
- 17. @ Html.Textareaは入力をサニタイズしますか?
- 18. gen_serverモジュールをどのようにパラメータ化しますか?
- 19. どのように位置パラメータを追加しますか?
- 20. カスタムビューのandroid:layout_widthおよびandroid:layout_heightパラメータにはどのようにアクセスしますか?
- 21. GraphicsPath.AddArcはstartAngleおよびsweepAngleパラメータをどのように使用しますか?
- 22. 錆にはどのように関数をパラメータとして渡しますか?
- 23. PUTパラメータはページにどのように渡されますか?
- 24. C#のSqlCommand戻る入力パラメータ
- 25. sqlCommand、プログラムでストアドプロシージャのパラメータを取得して設定する
- 26. Javaでは、Stack.pop()をパラメータとしてどのように適用しますか?
- 27. 名前なしパラメータをSqlCommand(ADO.NET)を介してストアドプロシージャに渡す方法はありますか?
- 28. WordPressのインラインリンクをサニタイズしますか?
- 29. Rails 3 Routing - ルートルートからのパラメータはどのように使用しますか?
- 30. select_tagを持つmodel_forモデルオブジェクトはどのようにパラメータをネストしますか?
大きな質問 - パラメータ化されたクエリの使用によってセキュリティがどれだけ深く提供されているかを理解することが重要です。 – RedFilter