当社の製品の「API」を開発中です。これにより、ユーザーは「問合せ」から戻らない列を定義できるようになり、必要なSQLを構築します。動的に生成されたSQLセキュリティの懸念(SQLインジェクションなど)
SQLインジェクション攻撃を避けるために、常にパラメータ化されたクエリを使用する必要があることは知っています。しかし、返される列がユーザーによって定義されているステートメントを作成するときに、セキュリティ上のリスクはありますか?私たちは次のAPIリクエストを持っているとします。これは私が何を意味するか説明するためだけの例です:)
/api/customers/getall?fields=Name,Phone,Email&where=Zip=1000
SQLが
SELECT Name, Phone, Email FROM Customers WHERE Zip = @Zip
私はそれは、単にフィールドのパラメータを取り、その周りに直接SQLを構築することを考えていないよとなりますおそらくリストになり、IdやModifiedのようないくつかのデフォルトの列が返されます。
この場合、どのようなことに注意してください。そして、攻撃からどのように保護しますか?
- クリスチャン
ストアドプロシージャはオプションではありません。このAPI専用のデータベースを変更する必要はありません。 返される一連の列を指定して、適切なSQLを動的に生成するSPを作成するにはどうすればよいでしょうか? –