Я использую ASP.NET, C# и MS SQL, я создал страницу построителя правил, которая позволяет пользователям создавать сложные правила. Эта страница строит то, что приходит после предложения «Где» в вызове SQL, но страница правил не может создавать подзапросы, порядок операций или другие действительно сложные предложения.Предотвращение SQL-инъекции без параметризованных запросов?
Мы хотим дать возможность продвинутым пользователям редактировать этот оператор, но мы хотим остановить атаки SQL-инъекций, которые могут выполнять вредоносный код. Нам все равно, хотят ли они поставить 1 = 1, мы действительно заботимся о том, чтобы они пытались вызвать процедуры обновления/удаления/хранения и т. Д. Таким образом, все, что угодно в MS SQL, которое может прийти после предложения where, справедливо.
Вот пример расширенного запроса, который пользователь может захотеть ввести, что генератор правил не будет строить с его выпадающими меню.
Where Org in (Select Org from AnotherTable Where Manager in (1,2,3)) AND ((Person= 4 OR Level = 5) AND Entity between 5 and 10 or Entity = 15)
Есть ли что-то такое, что есть или бесплатно, о чём можно подумать? Я видел один классный строитель правил, который позволяет это, но это более 2000 долларов.
Можете ли вы добавить примеры того, что делает ваш строитель правил и как он работает прямо сейчас? Если вы просто позволяете продвинутым пользователям писать строку, которая объединяется с командой sql, вы обнаружите, что это будет потенциально болезненно для проверки. т.е.: как бы вы подтвердили, что кто-то написал «-», но не для того, чтобы прокомментировать строку кода? – rossisdead
можете ли вы добавить несколько примеров? – ncm
Сказав это, это очень сильно пахнет серьезным угрозой безопасности, ожидающей своего появления. – rossisdead