「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > SQLのパラメーター化されたクエリは、SQLインジェクション攻撃をどのように防止しますか?

SQLのパラメーター化されたクエリは、SQLインジェクション攻撃をどのように防止しますか?

2025-02-06に投稿しました
ブラウズ:503

How Do Parameterized Queries in SQL Prevent SQL Injection Attacks?

sqlパラメーター化クエリと質問マーク

]

SQLドキュメントを調べると、クエリで疑問符(?)に遭遇する可能性があります。これらのプレースホルダーは、パラメーター化されたクエリを表し、プログラムで動的なSQLを実行するために広く使用されています。

パラメーター化されたクエリには多くの利点があります。パラメーター値をクエリ自体から分離することにより、コードを簡素化し、より効率的かつ柔軟にします。さらに、SQL注射攻撃を防ぐことにより、セキュリティを強化します。

たとえば、擬似コードの例:

ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = 7")
result = cmd.Execute()

は次のように書き直すことができます:

ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = ?")
cmd.Parameters.Add(7)
result = cmd.Execute()

この手法により、正しい弦の脱出が保証され、SQL注入のリスクがなくなります。次のシナリオを検討してください:

string s = getStudentName()
cmd.CommandText = "SELECT * FROM students WHERE (name = '"   s   "')"
cmd.Execute()

ユーザーが弦楽器を入力する場合、sqlインジェクション攻撃が発生する可能性があります。ただし、パラメーター化されたクエリを使用します:

s = getStudentName()
cmd.CommandText = "SELECT * FROM students WHERE name = ?"
cmd.Parameters.Add(s)
cmd.Execute()

ライブラリ機能は入力をクリーンアップして、悪意のあるコードの実行を防ぎます。

または、Microsoft SQL Serverは名前のパラメーターを使用します。これにより、読みやすさと明確さが向上します。

 cmd.text = "the the the thingb = @varname"からtabeaからthingaを選択
cmd.parameters.addwithvalue( "@varname"、7)
result = cmd.execute() 
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3