Что означает каноническое представление и его потенциальная уязвимость для веб-сайтов
Я искал в google значение канонического представления и обнаружил документы, которые являются слишком загадочными. Может ли кто-нибудь дать краткое объяснение канонического представления, а также каковы некоторые типичные уязвимости на веб-сайтах для атак канонического представления?
4 ответов
канонизация-это процесс, с помощью которого вы принимаете входные данные, такие как имя файла или строка, и превращаете их в стандартное представление.
например, если ваше веб-приложение разрешает доступ только к файлам под C:\websites\mydomain тогда, как правило, любой вход, ссылающийся на имена файлов, канонизируется как физический прямой путь, а не тот, который использует относительные пути. Если вы хотите открыть C:\websites\mydomain\example\example - ... txt один вход в эту функцию может быть пример\образец.формат txt. Трудно понять, выходит ли это за пределы вашего веб-сайта, поэтому функция канонизации будет смотреть на каталог приложения и изменять этот относительный путь на физический, C:\websites\mydomain\example\example - ... формат txt. Это, очевидно, легче проверить, так как вы просто делаете сравнение строк в начале пути к файлу.
для входов HTML вы берете входы, такие как %20, и канонизируете их путем unencoding, поэтому это превратится в пространство. Это хорошая идея, поскольку количество различных способов кодирования многочисленно, канонизация означает, что вы будете проверять только декодированную строку, а не пытаться охватить все варианты кодирования.
в основном вы принимаете вход, который логически эквивалентен и преобразуете их в стандартную форму, на которую вы можете действовать.
следующее объяснение Из" безопасности приложений и разработки STIG " найдено здесь:
3.11 Каноническое Представление Возникают вопросы канонического представления если имя ресурса используется для контроль доступа к ресурсам. Есть множественные методы представления имена ресурсов в компьютерной системе. Приложение, основанное исключительно на имя ресурса для управления доступом может неправильно сделать контроль доступа решение если имя указывается в непризнанный формат.
например, в Windows, Блокнот.exe может быть представлен следующим файлом и комбинации имен пути:
C:\Windows\System32\notepad.exe
%SystemRoot%\System32\Блокнот.exe
\?\C:\Windows\System32\notepad.exe
\хост\с\$Windows в папку\System32\Блокнот.exe
приложение, пытающееся ограничить доступ к файлу основе исключительно на путь к файлу и имя может быть неправильно предоставить или запретить доступ. Тот же вопрос может применяться к другим именованным ресурсам на система, такая как hard-и софт-ссылки, URL, труба, доля, каталог, имя устройства или данные файлы, если альтернативная кодировка с данными используются механизмы.
в следующие пункты могут указывать на потенциал вопросы канонического представления в применение:
• контроль доступа решения, основанные на ресурсах имя.
• не удалось уменьшить имя ресурса до его каноническая форма Перед использованием.
In порядок минимизации канонического вопросы представительства в применение, осуществляет следующее процедуры:
• Не полагайтесь исключительно на имена ресурсов для управления доступом.
• Если использование имен ресурсов для управления открыть, проверить имена, чтобы обеспечить они в правильном формате; отклонить все имена не монтаж заведомо исправный критерий.
• использовать операционную систему механизмы контроля доступа, такие как разрешения и права доступа.
Canonicalisation означает сокращение данных, полученных в своей простейшей форме, он используется для проверки правильности ввода.
Canonical (я думаю) означает, что ввод консоли является "типичным поведением". Неканонический означает, что ввод нестандартен и требует специальных знаний, таких как поведение ввода "vi" в linux.