Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Переменные $cookie_name
2009/6/26 Gena Makhomed <gmm@xxxxxxxxx>:
> 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
>
>
>
|