Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пользовательские данные, которые являются любым типом входных данных (данные из веб-запроса или URL-адреса, входные данные для элементов управления приложения Microsoft Windows Forms и т. д.), могут негативно повлиять на код, так как часто эти данные используются непосредственно в качестве параметров для вызова другого кода. Эта ситуация аналогична вредоносному коду, вызывающму код с странными параметрами, и следует принять те же меры предосторожности. Пользовательский ввод на самом деле сложнее сделать безопасным, так как отсутствует кадр стека для отслеживания наличия потенциально ненадежных данных.
Это один из самых тонких и сложных ошибок безопасности, которые необходимо найти, поскольку, хотя они могут существовать в коде, который, казалось бы, не связан с безопасностью, они являются шлюзом для передачи плохих данных в другой код. Чтобы искать эти ошибки, следуйте любому типу входных данных, представьте, какой диапазон возможных значений может быть, и рассмотрите, может ли код видеть эти данные для обработки всех этих случаев. Эти ошибки можно исправить, проверив диапазон и отклонив входные данные, которые код не может обрабатывать.
Ниже приведены некоторые важные аспекты, связанные с данными пользователей:
Все пользовательские данные в ответе сервера обрабатываются в контексте сайта сервера на клиенте. Если веб-сервер принимает пользовательские данные и вставляет его в возвращаемую <веб-страницу, это может, например, включить тег скрипта> и запустить его как будто с сервера.
Помните, что клиент может запросить любой URL-адрес.
Рассмотрите сложные или недопустимые пути:
.. \ , чрезвычайно длинные пути.
Использование подстановочных знаков (*).
Расширение маркера (%token%).
Странные формы путей с особым значением.
Альтернативные имена потоков файловой системы,
filename::$DATA
например.Короткие версии имен файлов,
longfi~1
например дляlongfilename
.
Помните, что Eval(userdata) может сделать что-либо.
Будьте осторожны с поздним связыванием к имени, в которое включены некоторые пользовательские данные.
Если вы работаете с веб-данными, рассмотрите различные формы экранирования, которые допустимы, в том числе:
Шестнадцатеричные побеги (%nn).
Экранирование Юникода (%nnn).
Чрезмерно длинные UTF-8 escape-последовательности (%nn%nn).
Двойные последовательности (%nn становится %mmnn, где %mm — это последовательность для '%' ).
Будьте осторожны с именами пользователей, которые могут иметь более одного канонического формата. Например, часто можно использовать форму MYDOMAIN\username или форму имени пользователя@mydomain.example.com.