当前位置:网站首页>Analysis of the problem that the cookie value in PHP contains a plus sign (+) and becomes a space
Analysis of the problem that the cookie value in PHP contains a plus sign (+) and becomes a space
2022-07-05 22:11:00 【Selfish thoughts】
background
Recently, I found some user feedback , Can't get login information , So it was analyzed
analysis
Our login information is encrypted and stored in cookie Medium , Check this user's cookie The encrypted information contains plus “+” , however php $_COOKIE At the time of acquisition , It becomes a space , So decryption failed
Analyze the information in the request header and find , The value passed by the request is “+” Of , however :
such as cookie Stored in the “cWEolyrQ0l63FG+YWHA” ,$_COOKIE Get the displayed “cWEolyrQ0l63FG YWHA” , One more space
So I looked for information
Find the following introduction :
notes : Sending cookie when ,setcookie The value of will be automatically URL code . When received... Will be done URL decode . If you don't have to , have access to setrawcookie() Instead of .
notes :setrawcookie() And setcookie() almost the same , The difference is that it will not be sent to the client , Yes cookie Value automatically URL code . Use setrawcookie, Values within these characters cannot be used :(; \ t \ r \ n \ 013 \ 014)
Look at this introduction , I think after taking it out urldecode Just a moment
urldecode($_COOKIE['user_id'])
Actually, it doesn't work , So try urlencode , I found it successful , But if cookie There are other special characters in such as "/" , Not anymore.
urlencode($_COOKIE['user_id'])
So this scheme , Can't solve the problem
Solution
We analyzed the request header above cookie Is a full , So we can try to get from the request header cookie
<?php // getallheaders yes apache Supported functions ,nginx You need to define yourself if (!function_exists('getallheaders')) { function getallheaders() { foreach ($_SERVER as $name => $value) { if (substr($name, 0, 5) == 'HTTP_') { $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; } } return $headers; } } $cookieStr = getallheaders()['Cookie']; $cookies = explode(';',$cookieStr); foreach($cookies as $cookie) { $cookieTmp = explode('=',$cookie); $_COOKIE[trim($cookieTmp[0])] = trim($cookieTmp[1]); }
Other solutions
Yes cookie The value of the to base64_encode(), When you use it base64_decode()
Reference resources
边栏推荐
- Blocking of concurrency control
- ICMP 介绍
- Concurrency control of performance tuning methodology
- Summary of concurrency control
- How to view Apache log4j 2 remote code execution vulnerability?
- 华为云ModelArts文本分类–外卖评论
- Unique occurrence times of leetcode simple questions
- 2022-07-05: given an array, you want to query the maximum value in any range at any time. If it is only established according to the initial array and has not been modified in the future, the RMQ meth
- Multiplexing of Oracle control files
- boundary IoU 的计算方式
猜你喜欢
Deeply convinced plan X - network protocol basic DNS
Server optimization of performance tuning methodology
Livelocks and deadlocks of concurrency control
Business learning of mall order module
MySQL连接断开报错MySQLdb._exceptions.OperationalError 4031, The client was disconnected by the server
Leetcode simple question: check whether each row and column contain all integers
Blocking protocol for concurrency control
Recovery technology with checkpoints
Blocking of concurrency control
K210 learning notes (IV) k210 runs multiple models at the same time
随机推荐
了解 Android Kotlin 中 DataStore 的基本概念以及为什么应该停止在 Android 中使用 SharedPreferences
Common interview questions of redis factory
装饰器学习01
Cobaltstrike builds an intranet tunnel
[Yugong series] go teaching course 003-ide installation and basic use in July 2022
Win11缺少dll文件怎么办?Win11系统找不到dll文件修复方法
Evolution of large website architecture and knowledge system
Interprocess communication in the "Chris Richardson microservice series" microservice architecture
Cross end solutions to improve development efficiency
Codeforces 12D ball tree array simulation 3 sorting elements
极狐公司官方澄清声明
Decorator learning 01
Create a virtual machine on VMware (system not installed)
Deeply convinced plan X - network protocol basic DNS
Interview questions for famous enterprises: Coins represent a given value
A substring with a length of three and different characters in the leetcode simple question
C language knowledge points link
What if win11 is missing a DLL file? Win11 system cannot find DLL file repair method
How to develop and introduce applet plug-ins
Huawei cloud modelarts text classification - takeout comments