Вопрос

Каковы наилучшие (или, по крайней мере, наиболее распространенные) способы в ASP (VBScript) для обработки ввода? Мои главные проблемы - HTML / JavaScript инъекции & Amp; SQL инъекции. Есть ли какой-нибудь эквивалент PHP htmlspecialchars или addslashes и так далее? Или я должен сделать это вручную с помощью функции замены строк?

Это было полезно?

Решение

Суть в следующем:

<Ол>
  • Всегда вводите пользовательский код в формате HTML, прежде чем записывать его на свою страницу. Server.HTMLEncode() делает это для вас.
  • Всегда используйте параметризованные запросы для взаимодействия с базой данных. Объекты ÀDODB.Command и ADODB.CommandParameter являются правильным выбором здесь.
  • Всегда используйте утилиту URLScan и блокировку IIS на сервере IIS, который отображает страницу, если они не версии 6 и выше, для которых эти инструменты больше не требуются.
  • Если вы придерживаетесь пунктов 1 и 2 рабски , я не могу думать о многих вещах, которые могут пойти не так.

    Большинство уязвимостей происходит из-за неправильной кодировки пользовательского ввода или построения строк SQL из него. Если вы по какой-то причине пришли к тому, что вам мешает ввод HTML-кодирования, вы обнаружили недостаток дизайна в своем приложении.

    Другие советы

    Я бы добавил в список Томалаков еще один пункт.

    Избегайте использования конкатенации значений полей в коде SQL. То есть в некоторых случаях хранимая процедура может построить некоторый SQL в строке для последующего выполнения. Это хорошо, если только текстовое поле не используется как часть его конструкции.

    Параметр команды может защитить код SQL, предназначенный для ввода значения от перехвата, при выполнении нежелательного SQL, но он позволяет такому нежелательному SQL стать данными в базе данных. Это уязвимость первого уровня. Уязвимость внедрения второго уровня существует, если значение поля затем используется в некоторой конкатенации строк SQL внутри хранимой процедуры.

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

    Именно здесь проверка ввода становится важной. Я не знаю ни одного инструмента, который бы сделал это для вас, но несколько простых регулярных выражений могут помочь. Например, & Quot; & Lt; \ w + & Quot; обнаружит попытку включить тег HTML в поле.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top