#security #model-view-controller #asp.net-mvc-3 #sql-injection
#Безопасность #model-view-controller #asp.net-mvc-3 #sql-инъекция
Вопрос:
Я разрабатываю ASP.NET Приложение MVC 3 и нужен способ обойти SQL-инъекции, было бы полезно что-нибудь простое. Я следил за статьей Microsoft по этому вопросу, но, похоже, она не соответствует моему коду и структуре.
Любая помощь приветствуется
Комментарии:
1. просто… всегда используйте параметры SQL всякий раз, когда вы создаете инструкцию с пользовательским вводом.
2. однако не все так просто — этим можно злоупотребить и использовать параметры, которые затем, в свою очередь, вводятся в динамический sql на стороне сервера в proc.
3. @Adam Tuliper тогда они не использовали параметры SQL везде (включая хранимые процедуры).
4. верно верно, я просто хочу уточнить, что простое включение их, скажем, в proc — не полностью защищает вас, если вы неправильно используете их внутри proc
Ответ №1:
Для предотвращения sql-инъекции:
Не формируйте никакого динамического sql.
- Используйте хранимые процедуры (и не включайте динамический sql в хранимый процесс — если вы используете, убедитесь, что используете sp_executesql, а не exec, поскольку sp_executesql может принимать параметризованный запрос
- используйте параметризованные запросы
- используйте ORM (например, entity framework), который в любом случае использует параметризованные запросы за кулисами.
старайтесь не использовать какой-либо динамический sql — если по какой-то причине это необходимо, убедитесь, что вы используете параметризованные запросы.
Не используйте динамический sql и не удаляйте из него кавычки — немного опасно предполагать, что это будет единственным вектором атаки, как это делают некоторые.