2009-07-22 1 views
5

Я искал в google значение канонического представления и открыл документы, которые являются слишком загадочными. Может ли кто-нибудь дать быстрое объяснение канонического представления, а также какие типичные уязвимости на сайтах для канонических представлений?Что означает каноническое представление и его потенциальная уязвимость к веб-сайтам?

ответ

8

Canonicalisation - это процесс, с помощью которого вы вводите ввод, например имя файла или строку, и превращаете его в стандартное представление.

Например, если ваше веб-приложение разрешает доступ только к файлам под C: \ websites \ mydomain, то обычно любой ввод, относящийся к именам файлов, канонизируется как физический, прямой путь, а не тот, который использует относительные пути. Если вы хотите открыть C: \ websites \ mydomain \ example \ example.txt, один ввод в эту функцию может быть примером \ example.txt. Трудно разобраться, если это выходит за пределы вашего веб-сайта, поэтому функция canonicalisation будет смотреть на каталог приложения и изменить этот относительный путь на физический, C: \ websites \ mydomain \ example \ example.txt. Это, очевидно, легче проверить, поскольку вы просто выполняете сравнение строк в начале пути к файлу.

Для входов HTML вы вводите входные данные, такие как% 20, и canonicalise их путем unencoding, поэтому это превратилось бы в пространство. Это хорошая идея, поскольку количество различных способов кодирования многочисленное, canonicalisation означает, что вы только проверили бы расшифрованную строку, а не пытались охватить все варианты кодирования.

В основном вы берете ввод, который логически эквивалентен и преобразует их в стандартную форму, на которую вы можете действовать.

+0

, так что потенциально во входном поле я мог бы попробовать и сделать инъекцию sql-инъекций или возможный XSS для обхода обычной строковой дезинфекции? – predhme

+1

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

-4

Канонический (я думаю) означает, что вход в консоль является «типичным поведением». Non-canonical означает, что вход нестандартен и требует специальных знаний, таких как поведение ввода «vi» в linux.

+0

Но как это относится к веб-сайтам и быть уязвимым? – predhme

+0

См. Ответ blowdart для определения canonical –

+0

Мой ответ не конфликтует с ответом Blowdarts, за исключением того, что я мог бы объяснить это в одном предложении. Для программистов ключом является эффективность. – djangofan

3

следующее объяснение из «Применение безопасности и развития STIG» найдено here:

3,11 Каноническое представление Канонические вопросы представительства возникают , когда имя ресурса используется для доступа к ресурсам управления. Есть несколько методов представления имена ресурсов в компьютерной системе. Приложение, использующее только имя ресурса для контроля доступа, может неправильно установить управление доступом решение, если имя указано в непризнанным форматом.

Например, в Windows, notepad.exe может быть представлена ​​в следующем файле и комбинации имен пути:

C: \ Windows \ System32 \ notepad.exe

% SystemRoot% \ System32 \ notepad.exe

\ \ C: \ Windows \ System32 \ notepad.exe

\ хост \ C $ \ Windows \ system32 \ notepad.exe

Приложение, которое пытается ограничить доступ к файлу, основанному исключительно на пути и имени файла , может быть неправильно предоставить или запретить доступ.Та же проблема может применяться к другим именованным ресурсам на системы, такие как аппаратно- софт-ссылка, URL, трубы, долю, каталога, имя устройства, или в пределах данных файлы, если альтернативное кодирование механизмы используется с данными.

В следующих элементов могут указывать на потенциальные канонические вопросы представительства в качестве применения:

• контроль доступа решения, основанного на имя ресурса.

• Невозможность уменьшить имя ресурса до его канонической формы перед использованием.

В для того, чтобы свести к минимуму канонических вопросов представительства в приложения реализованы следующие процедур:

• Не следует полагаться исключительно на имен ресурсов для управления доступом.

• Если с использованием имен ресурсов для управления доступа, подтвердите имена, чтобы обеспечить , они находятся в надлежащем формате; отклонить все имена, не соответствующие известному хорошему критериям.

• Использовать операционные системы , такие как разрешений и ACL.

0

Canonicalisation означает сокращение полученных данных до его простейшей формы, оно используется для проверки ввода.