1. ホーム
  2. .net

[解決済み] SQLParameterはどのようにSQLインジェクションを防ぐのですか?

2023-07-29 16:18:39

質問

具体的にはどのような背景があるのでしょうか? SQLParameter が .NET のパラメータ化されたクエリにおける SQL Inection 攻撃を防止しているのは、いったいどのような背景からなのでしょうか。 単に疑わしい文字を削除しているだけなのか、それとももっと何かあるのでしょうか?

悪意のある入力を渡したときに、実際に何が SQL Server に届くかを確認した人はいますか?

関連する SQLのFROM文の中でSQLParameterを使用できますか?

どのように解決するのですか?

基本的に SQLCommand を使って SQLParameters を使う場合、パラメータは決して文に直接挿入されません。その代わり sp_executesql と呼ばれるシステム ストアド プロシージャが呼び出され、SQL 文字列とパラメータの配列が渡されます。

このように使用された場合、パラメータは分離され、文から解析されるのではなく、データとして扱われます(したがって、文が変更される可能性があります)。パラメータの値が何らかの方法で無効であるという大げさなエラーが表示されるだけです。