#sql #vb.net #parameters #sql-injection #query-builder
#sql #vb.net #параметры #sql-инъекция #конструктор запросов
Вопрос:
С помощью оператора select, подобного следующему:
Select ID, Fname, Lname,
from Users
where Fname @searchCriteria @Fname
Util.AddParameters(“@Fname”, tbFname.value, SqlDbType.nvarchar)
Как мне сделать то же самое с критериями поиска?
Util.AddParameters(“@searchCriteria”, =, )
Комментарии:
1. Используйте конкатенацию строк :
"SELECT ID, Fname, Lname, FROM Users WHERE Fname " amp; searchCriterion amp; " @Fname"
. Не позволяйте пользователю вводить значение переменнойsearchCriterion
напрямую.2. Вы можете использовать параметры только для значений, никакая другая часть кода SQL не может быть предоставлена через параметр; не ключевые слова, не идентификаторы и не операторы. Единственный способ, которым вы могли бы это сделать, — это если бы у вас была хранимая процедура, которая принимала эти части как текст и создавала вторичный SQL внутри, а затем выполняла его. Хотя в этом мало смысла. Как и предлагалось, используйте конкатенацию для этой части, но убедитесь, что пользователь выбирает из допустимых значений и не может ввести свой собственный вредоносный фрагмент SQL.