Re: Переменные $cookie_name

Gena Makhomed gmm at csdoc.com
Fri Jun 26 23:08:23 MSD 2009


On Friday, June 26, 2009 at 20:31:46, Kirill A. Korinskiy wrote:

>> предлагаю такой вариант:

>> '-' транслируется в '_'

>> '_' транслируется в '__'

>> взаимно-однозначного соответствия нет, но и последовательность символов '--'
>> в стандартных заголовках нигде не встречается, поэтому проблем не будет.

>> заодно не будет уязвимости, которая появляется
>> при включении директивы underscores_in_headers

KAK> это еще хуже, чем мой хак и чем идея с экранированием.

как можно экранировать недопустимые символы,
если в именах переменных разрешены только буквы,
цифры и символ подчеркивания ?

разве что кодировать каждый недопустимый символ
как _0x00 ... _0xff, символ '-' преобразовывать
в символ '_', символ '_' кодировать как '_0x5f',
символ '0' из входного потока кодировать как '_0x30',
если во входном потоке он идет сразу после символа '-'.

при обратном преобразовании '_' становится '-',
если после '_' не идет символ '0', иначе '_0'
понимается как начало escape-последовательности.

'-'  <=> '_'

'_'  <=> '_0x5f'

'-0' <=> '__0x30'

так будет взаимно-однозначное соответствие
исходной и закодированной строки символов,
а также - полная обратная совместимость
с режимом 'underscores_in_headers off'.

-- 
Best regards,
 Gena






More information about the nginx-ru mailing list