2008-09-11 5 views
4

Я немного смущен. Microsoft, насколько я могу судить, утверждает, что параметризация - лучший способ защитить вашу базу данных от атак SQL-инъекций. Но я нахожу два противоречащих источника информации здесь:Параметризация в VBScript/ASP Classic и ADO

This page говорит, что использует объект команды ADO. Но this page говорит, что объект команды небезопасен для сценариев. Кажется, я кое-что вспомнил, что объект команды не должен использоваться в VBScript или JScript из-за уязвимостей безопасности, но я не могу найти эту статью.

Я что-то упустил, или эти две статьи, похоже, противоречат друг другу?

ответ

4

Возможно, я ошибаюсь, но я думаю, что это просто означает, что кто-то может использовать объект Command, чтобы делать плохие вещи. То есть ему не следует доверять, если кто-то другой скриптит его.

См. safe for scripting в этой статье. Каждый экземпляр, который говорит об этой фразе в Интернете, ссылается на него так, как будто вы отмечаете элемент управления ActiveX, говорящий: «Этот элемент управления не выполняет ввода-вывода или только возвращает сервер к серверу, из которого он пришел», но объект Command этого не делает. Его можно использовать, чтобы делать много вещей, которые могут быть небезопасными.

«Безопасный», о котором они говорят, и «безопасный» для предотвращения внедрения SQL - это две разные вещи. Статья об использовании объекта команды ADO для параметризации ваших данных включена. Вы должны это сделать.

И, Microsoft еще раз подтверждает это здесь:

http://msdn.microsoft.com/en-us/library/ms676585(v=VS.85).aspx

1

Я думаю, что «безопасные» означает «безопасный для запуска с веб-страницы, мы просто извлеченной из какого-то нигерийского принца». Объект команды должен быть безопасным для запуска на сервере.

На работе, хотя в тот день мои коллеги не доверяли ему, поэтому у нас была внутренняя структура, которая в основном делала то же самое.