Spec-Zone.ru › ColdFusion

canonicalize

Канонизирует или декодирует входную строку. Канонизация — это операция приведения потенциально закодированной строки к простейшей форме. Это важно, поскольку злоумышленники часто используют кодирование, чтобы изменить входные данные и обойти фильтры проверки, сохранив возможность их корректной интерпретации целью атаки. Обратите внимание: данные, закодированные более одного раза, обычно не создаются обычным пользователем и должны рассматриваться как атака.

canonicalize(input, restrictMultiple, restrictMixed) → returns string

  • CF10+
  • Lucee4.5+
  • BL 1.0.0+
  • См. также: encodeForCSS encodeForXML encodeForJavaScript encodeForHTML

    Справочник аргументов

    input string
    Обязательный

    Строка для кодирования.

    restrictMultiple boolean
    Обязательный

    Если задано значение true, множественное кодирование запрещено. Установите для этого аргумента значение true, чтобы отклонять входные данные при обнаружении множественного или вложенного кодирования. Если для этого аргумента задано значение true, а входные данные закодированы несколько раз или вложенным образом с использованием одной схемы кодирования, будет вызвана ошибка.

    restrictMixed boolean
    Обязательный

    Если задано значение true, смешанное кодирование запрещено. Установите для этого аргумента значение true, чтобы отклонять входные данные при обнаружении смешанного кодирования. Если для этого аргумента задано значение true, а входные данные закодированы с использованием смешанного кодирования, будет вызвана ошибка.

    throwOnError boolean
    По умолчанию: false

    CF 11+ Если значение этого аргумента равно true и restrictMultiple или restrictMixed также равно true, а входные данные содержат строки со смешанным или множественным кодированием, будет вызвано исключение. Если значение этого аргумента равно false, вместо исключения будет возвращена пустая строка.

    Совместимость

    ColdFusion:

    Версия 10+ ColdFusion 11: добавлен новый атрибут throwOnError.

    BoxLang:

    Версия 1.0.0+ Эта BIF предоставляется модулем bx-esapi.

    Примеры
    Пример кода с вызовом функции canonicalize

    Канонизация простой строки с HTML-сущностью

    Канонизация простой строки с HTML-сущностью.

    <cfoutput>#canonicalize("&lt;",false,false)#</cfoutput>

    Ожидаемый результат: <

    Обнаружение множественного и смешанного кодирования с вызовом ошибки

    (Пример для Adobe CF 11+ с параметром throwOnError, установленным в true) Обнаружение множественного и смешанного кодирования с вызовом ошибки. Обнаруживается смешанное кодирование, поскольку данные закодированы с использованием URL-кодирования и кодирования HTML-сущностей. Также обнаруживается множественное кодирование.

    <cftry>
    	<cfoutput>#canonicalize("%26lt; %26lt; %2526lt%253B %2526lt%253B %2526lt%253B",true,true, true)#</cfoutput><br/>
    	<cfcatch type="any" >
    		<!--- throws Error when throwOnError set to true (CF11+) when mixed or multiple encoding is detected. --->
    		<cfdump var="#cfcatch#" >
    	</cfcatch>
    </cftry>

    Ожидаемый результат: Сообщение об ошибке: сбой проверки входных данных. В журнале будет содержаться более подробная информация об ошибке.

    Обнаружение множественного и смешанного кодирования с вызовом ошибки

    (Пример для Adobe CF 11+ с параметром throwOnError, установленным в false) Обнаружение множественного и смешанного кодирования с вызовом ошибки. Обнаруживается смешанное кодирование, поскольку данные закодированы с использованием URL-кодирования и кодирования HTML-сущностей. Также обнаруживается множественное кодирование.

    <!--- an Empty string will be returned if the throwOnError is set to false and multiple or mixed encoding is found --->
    <cfoutput>#canonicalize("%26lt; %26lt; %2526lt%253B %2526lt%253B %2526lt%253B",true,true, false)#</cfoutput>

    Ожидаемый результат: [Пустая строка]

    Обнаружение смешанного, но не множественного кодирования возвращает пустую строку

    Обнаружение смешанного, но не множественного кодирования возвращает пустую строку.

    <cfoutput>#canonicalize("%25 %2526 %26##X3c;script&##x3e; &##37;3Cscript%25252525253e",false,true)#</cfoutput>
    <!--- The following example is purely to show the error when using `throwOnError` parameter set to true (Adobe CF11+) --->
    <cftry>
    	<cfoutput>#canonicalize("%25 %2526 %26##X3c;script&##x3e; &##37;3Cscript%25252525253e",false,true, true)#</cfoutput><br/>
    	<cfcatch type="any" >
    		<!--- throws Error when throwOnError set to true. --->
    		<cfdump var="#cfcatch#" >
    	</cfcatch>
    </cftry>

    Ожидаемый результат: [Пустая строка]

    Обнаружение смешанного и множественного кодирования

    Обнаруживается смешанное кодирование, поскольку данные закодированы с использованием URL-кодирования и кодирования HTML-сущностей. Также обнаруживается множественное кодирование.

    <!--- Decodes the string using both percent and HTML Entity encodings as the flags were set to false --->
    <cfoutput>#canonicalize("%26lt; %26lt; %2526lt%253B %2526lt%253B %2526lt%253B",false,false)#</cfoutput><br/>
    <cfoutput>#canonicalize("&##X25;3c",false,false)#</cfoutput><br/>
    <cfoutput>#canonicalize("&##x25;3c",false,false)#</cfoutput>

    Ожидаемый результат: < < < < < < <

    Простое декодирование JavaScript

    http://www.planetpdf.com/codecuts/pdfs/tutorial/jsspec.pdf см. раздел 2.7.5 о кодировании JS

    <cfoutput>#canonicalize("\\U003C",false,false)#</cfoutput><br/>
    <cfoutput>#canonicalize("\\X3C",false,false)#</cfoutput>

    Ожидаемый результат: < <

    © 2012–present Foundeo, Inc. and the CFDocs contributors.
    Licensed under the MIT License.
    ColdFusion is a trademark of Adobe Systems Incorporated.
    https://cfdocs.org/canonicalize

    Spec-Zone.ru

    Настройки Оффлайн Что нового Помощь О нас
    Spec-Zone .ru
    спецификации, руководства, описания, API