こんにちは、.NET Web アプリケーションの SQL インジェクションの防止について詳しく説明している優れた Web サイトを誰か知っているかどうか疑問に思っていました。どんなリソースも大いに活用されます、ありがとう。
5 に答える
「.NETでのSQLインジェクションの防止」について少しググると、たくさんの優れたリソースが見つかると思います。:)
とにかく、非常に重要なことの1つは、クエリを作成するために文字列連結を使用しないことです。代わりに、パラメーター化されたクエリを使用してください。ADO.NETを使用すると、非常に簡単な方法でこれを行うことができます。
string sql = "SELECT * FROM Persons WHERE Persons.Lastname LIKE @p_Name";
SqlCommand cmd = new SqlCommand (sql);
cmd.Parameters.Add ("@p_Name", SqlDbType.Varchar).Value = textBox1.Text + "%";
SqlCommand.Parametersコレクションを使用してパラメーターを渡し、SQLクエリテキストにユーザーテキストを挿入しない場合、リスクはありません。
- ゴールデンルール:ユーザー入力を連結しない
- .NETで独自のコマンド文字列を作成する場合は、Parametersコレクションを使用してください
- LINQを使用する場合、通常はそれを実行します
- TSQLでコマンドを作成する場合は、sp_executesqlまたはベンダーの同等のものを使用してください
最初に知っておくべきことは、クエリをパラメータ化するか、ストアドプロシージャを使用することです。
値を追加するだけのコードでアドホックSQLを使用しないでください
読み取りと書き込みのアクセス許可のみを付与します(または、書き込みを行わないページに対してのみ読み取りを行います)
MSDN Magazine の記事Stop SQL Injection Attacks Before They Stop Youはかなり完成しているようです。
SDL Embraces The Webは、特定の質問に関する詳細な情報は含まれていませんが、SQL インジェクション攻撃の防止に加えて、考慮すべきその他の事項の優れた情報源です。
通常の免責事項が適用されます。これらの記事に記載されているすべての情報に必ずしも同意するわけではありませんが、記載されている情報によって、公開 Web サイトでの SQL インジェクション (およびその他の) 攻撃を軽減する方法について考えるきっかけになれば幸いです。