「誰もが」パラメータ化された SQL クエリを使用して、ユーザー入力のすべての部分を検証することなく、SQL インジェクション攻撃から保護していると聞いています。
これどうやってやるの?ストアド プロシージャを使用する場合、これは自動的に取得されますか?
したがって、これはパラメータ化されていないという私の理解:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
これはパラメータ化されますか?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
または、SQL インジェクションから身を守るために、このようなより広範なことを行う必要がありますか?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
セキュリティ上の考慮事項以外に、パラメーター化されたクエリを使用する利点はありますか?
更新: この素晴らしい記事は、Grotok による質問の参照の 1 つにリンクされていました。 http://www.sommarskog.se/dynamic_sql.html