canonicalize
Канонизирует или декодирует входную строку. Канонизация — это операция приведения потенциально закодированной строки к простейшей форме. Это важно, поскольку злоумышленники часто используют кодирование, чтобы изменить входные данные и обойти фильтры проверки, сохранив возможность их корректной интерпретации целью атаки. Обратите внимание: данные, закодированные более одного раза, обычно не создаются обычным пользователем и должны рассматриваться как атака.
canonicalize(input, restrictMultiple, restrictMixed) → returns string
Справочник аргументов
input string Обязательный
restrictMultiple boolean Обязательный
restrictMixed boolean Обязательный
throwOnError boolean
По умолчанию: false
false
Совместимость
ColdFusion:
BoxLang:
bx-esapi. Примеры Пример кода с вызовом функции canonicalize
Канонизация простой строки с HTML-сущностью.
<cfoutput>#canonicalize("<",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> Ожидаемый результат: < < < < < < <
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