Что означает каноническое представление и его потенциальная уязвимость для веб-сайтов

Я искал в 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.