当前位置:网站首页>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
边栏推荐
- Overview of concurrency control
- Database tuning solution
- 每日刷题记录 (十四)
- Interview questions for famous enterprises: Coins represent a given value
- Talking about MySQL index
- Poj 3237 Tree (Tree Chain Split)
- Implementing Lmax disruptor queue from scratch (IV) principle analysis of multithreaded producer multiproducersequencer
- Implementing Lmax disruptor queue from scratch (IV) principle analysis of multithreaded producer multiproducersequencer
- Draw a red lantern with MATLAB
- Search: Future Vision (moving sword)
猜你喜欢
Oracle advanced query
Bitbucket installation configuration
Sentinel production environment practice (I)
Web3为互联网带来了哪些改变?
A number of ventilator giants' products have been recalled recently, and the ventilator market is still in incremental competition
Storage optimization of performance tuning methodology
The American Championship is about to start. Are you ready?
Oracle triggers
华为云ModelArts文本分类–外卖评论
科技云报道:算力网络,还需跨越几道坎?
随机推荐
MySQL actual combat 45 lecture learning (I)
Text组件新增内容通过tag_config设置前景色、背景色
Daily question brushing record (XIV)
POJ 3237 tree (tree chain splitting)
How to develop and introduce applet plug-ins
Web3为互联网带来了哪些改变?
Bitbucket installation configuration
Sentinel production environment practice (I)
What changes has Web3 brought to the Internet?
Shell script, awk condition judgment and logic comparison &||
Index optimization of performance tuning methodology
Storage optimization of performance tuning methodology
C language knowledge points link
About the writing method of SQL field "this includes" and "included in" strings
Comment développer un plug - in d'applet
Interview questions for famous enterprises: Coins represent a given value
Leetcode simple question: the minimum cost of buying candy at a discount
AD637使用筆記
The American Championship is about to start. Are you ready?
EBS Oracle 11g cloning steps (single node)