Я искал в google значение канонического представления и открыл документы, которые являются слишком загадочными. Может ли кто-нибудь дать быстрое объяснение канонического представления, а также какие типичные уязвимости на сайтах для канонических представлений?Что означает каноническое представление и его потенциальная уязвимость к веб-сайтам?
ответ
Canonicalisation - это процесс, с помощью которого вы вводите ввод, например имя файла или строку, и превращаете его в стандартное представление.
Например, если ваше веб-приложение разрешает доступ только к файлам под C: \ websites \ mydomain, то обычно любой ввод, относящийся к именам файлов, канонизируется как физический, прямой путь, а не тот, который использует относительные пути. Если вы хотите открыть C: \ websites \ mydomain \ example \ example.txt, один ввод в эту функцию может быть примером \ example.txt. Трудно разобраться, если это выходит за пределы вашего веб-сайта, поэтому функция canonicalisation будет смотреть на каталог приложения и изменить этот относительный путь на физический, C: \ websites \ mydomain \ example \ example.txt. Это, очевидно, легче проверить, поскольку вы просто выполняете сравнение строк в начале пути к файлу.
Для входов HTML вы вводите входные данные, такие как% 20, и canonicalise их путем unencoding, поэтому это превратилось бы в пространство. Это хорошая идея, поскольку количество различных способов кодирования многочисленное, canonicalisation означает, что вы только проверили бы расшифрованную строку, а не пытались охватить все варианты кодирования.
В основном вы берете ввод, который логически эквивалентен и преобразует их в стандартную форму, на которую вы можете действовать.
, так что потенциально во входном поле я мог бы попробовать и сделать инъекцию sql-инъекций или возможный XSS для обхода обычной строковой дезинфекции? – predhme
Санитарная обработка отличается. Как правило, инъекция SQL-инъекции не будет использовать кодировку, поэтому она не является проблемой канонизации. XSS может быть, это зависит от того, что вы делаете. Если вы кодируете все входные данные перед выводом, то нет, это не так. Однако, если вы пытаетесь выполнить белый список или, что еще хуже, черный список определенных частей строки, вы можете сначала записать строку, потому что, например,
Канонический (я думаю) означает, что вход в консоль является «типичным поведением». Non-canonical означает, что вход нестандартен и требует специальных знаний, таких как поведение ввода «vi» в linux.
источник
2009-07-22 18:54:43 djangofan
Но как это относится к веб-сайтам и быть уязвимым? – predhme
См. Ответ blowdart для определения canonical –
Мой ответ не конфликтует с ответом Blowdarts, за исключением того, что я мог бы объяснить это в одном предложении. Для программистов ключом является эффективность. – djangofan
следующее объяснение из «Применение безопасности и развития STIG» найдено here:
источник
2011-02-04 18:30:46 CrazyPyro
Canonicalisation означает сокращение полученных данных до его простейшей формы, оно используется для проверки ввода.
источник
2014-04-10 18:35:02 germangti