параметризация в VBScript/ASP Classic и ADO
-
09-06-2019 - |
Вопрос
Я здесь немного запутался.Насколько я могу судить, Microsoft утверждает, что параметризация — лучший способ защитить вашу базу данных от атак с использованием SQL-инъекций.Но я нахожу здесь два противоречивых источника информации:
Эта страница говорит использовать объект команды ADO.Но эта страница говорит, что объект команды небезопасен для сценариев.Кажется, я где-то читал, что объект команды не следует использовать в VBScript или JScript из-за уязвимостей безопасности, но я не могу найти эту статью.
Я что-то упускаю, или эти две статьи противоречат друг другу?
Решение
Я могу ошибаться, но я думаю, что это просто означает, что кто-то может использовать объект Command для совершения плохих поступков.Т.е.нельзя доверять, если это пишет кто-то другой.
Видеть безопасно для сценариев в этой статье.Каждый экземпляр, который говорит об этой фразе в Интернете, ссылается на нее, как будто вы отмечаете элемент управления ActiveX, говоря: «Этот элемент управления не выполняет ввод-вывод или только обращается к серверу, с которого он пришел», но объект Command этого не делает.Его можно использовать для выполнения множества вещей, которые могут быть небезопасными.
«Безопасность», о которой они говорят, и «безопасность», позволяющая предотвратить SQL-инъекцию, — это две разные вещи.Статья об использовании объекта команды ADO для параметризации ваших данных очень полезна.Тебе следует это сделать.
И Microsoft далее подтверждает это здесь:
http://msdn.microsoft.com/en-us/library/ms676585(v=VS.85).aspx
Другие советы
Я думаю, что «безопасно для сценариев» означает «безопасно для запуска с веб-страницы, которую мы только что получили от какого-то нигерийского принца».Объект команды должен быть безопасным для запуска на сервере.
Однако на работе в свое время мои коллеги не доверяли этому, поэтому у нас была собственная структура, которая, по сути, делала то же самое.