Мы находимся в процессе разработки «API» для одного из наших продуктов.Это позволит пользователю определить, какие столбцы они не хотят возвращать из своих «запросов», и мы создадим необходимый SQL.
Я знаю, что вы всегда должны использовать параметризованные запросы, чтобы избежать атак SQL-инъекций.Однако существуют ли угрозы безопасности при построении оператора, в котором возвращаемые столбцы определяются пользователями?Допустим, у нас есть следующий запрос API.Это просто пример, чтобы проиллюстрировать, что я имею в виду:)
/api/customers/getall?fields=Name,Phone,Email&where=Zip=1000
SQL будет
SELECT Name, Phone, Email FROM Customers WHERE Zip = @Zip
Я не думаю о том, чтобы просто взять параметр fields и построить SQL напрямуювокруг этого он, вероятно, будет преобразован в список и возвращен с некоторыми столбцами по умолчанию, такими как Id и Modified.
Что следует знать в этой ситуации?И как бы вы защитились от атак?
- Кристиан