ホームページ >データベース >mysql チュートリアル >パラメータ化されたクエリは SQL インジェクション攻撃からどのように保護できますか?
パラメータ化されたクエリ: SQL インジェクションに対する堅牢な防御
SQL インジェクションは依然として蔓延した脅威であり、データベースのセキュリティを侵害する可能性があります。 パラメーター化されたクエリは、ユーザーが指定したデータを SQL コード自体から分離することにより、非常に効果的なソリューションを提供します。これにより、悪意のあるコードの実行が防止され、データベースが保護されます。
パラメータ化されたクエリの構築
次の脆弱なクエリについて考えてみましょう:
<code class="language-sql">"SELECT foo FROM bar WHERE baz = '" & fuz & "'"</code>
これは SQL インジェクションの影響を受けやすいです。 パラメータを使用したより安全な代替方法は次のとおりです:
<code class="language-vbscript">WITH command .Parameters.Count = 1 .Parameters.Item(0).ParameterName = "@baz" .Parameters.Item(0).Value = fuz END WITH</code>
SQL Server では、パラメータ化は次のようになります:
<code class="language-sql">DIM sql AS STRING = "SELECT foo FROM bar WHERE baz= @Baz" USING cn AS NEW SqlConnection("YOUR CONNECTION STRING"), _ cmd AS NEW SqlCommand(sql, cn) cmd.Parameters.Add("@Baz", SqlDbType.VarChar, 50).Value = baz RETURN cmd.ExecuteScalar().ToString() END USING</code>
セキュリティを超えた利点
メリットはセキュリティを超えて広がります:
ストアド プロシージャとパラメータ化: 組み合わせたアプローチ
ストアド プロシージャにはセキュリティ上の利点がいくつかありますが、パラメータ化されたクエリに代わるものではありません。 インジェクションの脆弱性を防ぐために、ストアド プロシージャを呼び出すときもパラメーターを使用する必要があります。
パラメータ化されたクエリを一貫して使用することは、アプリケーションの堅牢なセキュリティ、パフォーマンスの向上、コード品質の向上にとって非常に重要です。
以上がパラメータ化されたクエリは SQL インジェクション攻撃からどのように保護できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。