Точки с запятой в суперглобальном $ _COOKIE

при написании класса для доступа к суперглобалам я только что узнал, что php удаляет точки с запятой из суперглобалей, вероятно, по соображениям безопасности.

например при установке значения cookie на что-то вроде <?php phpinfo(); ?>
я могу видеть дамп переменной, который выглядит как Array ( [cookie] => <?php phpinfo() [?>] => ) увидеть строку, содержащую точку с запятой, разделяющуюся на два или триминг-значения до первого появления точки с запятой.

теперь вот вопрос.
Как можно передать полную строку?

Поскольку я уже «контролирую» переданные переменные, я хочу записать, например, шестнадцатеричный дамп произвольной полезной нагрузки с использованием unpack("H*",$booboostr),

Итак, вот второй вопрос.
Как можно создать шестнадцатеричное представление для ввода?

заранее спасибо за любые подсказки.
С уважением

0

Решение

Чтобы завершить комментарий @ Barmar, любое значение $ _COOKIE с точкой с запятой будет разделено на дополнительный ключ $ _COOKIE, пары значений, если в разделе содержится «=», в противном случае данные будут пропущены.

Вкратце, для значений $ _COOKIE будет двойной взрыв для «;» и «=» вызывается.

Когда клиент изменяет значение cookie для ключа cookie sg перед (повторной) отправкой таким образом, чтобы это выглядело как firstval; foo=bar; omit-me; §$&%/&(/)=}][{ ¬½ это приведет к массиву $ _COOKIE со следующими данными на стороне сервера, вместо того, чтобы быть «простой» строкой для ключа cookie cookie:

$_COOKIE = Array (
[cookie] = firstval,
[foo] = bar,
[§$&%/&(/)] = ][{ ¬½
);

Как вы видете omit-me будет опущено, что приводит к тому, что невозможно получить полную строку сразу, учитывая условия, упомянутые выше.

С уважением.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]