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