当前位置:首页 > 黑客技术 > 正文内容

PHP序列化与反序列化解读

访客4年前 (2021-04-14)黑客技术555

花费了点时刻研讨了下PHP序列化,写在这儿。一是便利自己知识点回忆,二是协助相同有疑问的人,欢迎纠正过错,不喜勿喷.
0×01.确认装备文件
首要体系运用的ubuntu apt-get install方法装置的php5,所以在/etc/php5中两个文件夹中有php.ini 分别为cli与apache2 如下列
指令:
root@ubuntu:/etc/php5# ll -l apache2/ cli/
apache2/:
total 156
drwxr-xr-x 3 root root  4096 Dec 16 19:04 ./
drwxr-xr-x 5 root root  4096 May 28  2019 ../
drwxr-xr-x 2 root root  4096 Jul 14 09:14 conf.d/
-rw-r--r-- 1 root root 69890 Dec 16 19:04 php.ini
-rw-r--r-- 1 root root 69890 Sep 15 13:09 php.ini~
 cli/:
 total 148
drwxr-xr-x 3 root root  4096 Dec 11 17:39 ./
drwxr-xr-x 5 root root  4096 May 28  2019 ../
drwxr-xr-x 2 root root  4096 Jul 14 09:14 conf.d/
-rw-r--r-- 1 root root 69568 Dec 11 17:39 php.ini
-rw-r--r-- 1 root root 69570 Dec 11 17:39 php.ini~
 怎么确认apche2运用了哪个php.ini其实能够经过输出phpinfo 检查到,此处的cli目录中的php.ini装备文件是在指令行时运用的装备文件。
0×02.PHP序列化机制
1. PHP序列化机制
PHP中的装备文件php.ini中含有几项装备项
session.save_path=""   --设置session的存储途径
session_set_save_handler="" --设定用户自界说存储函数,假如想运用PHP内置会话存储机制之外的能够运用本函数(数据库等方法)
session.auto_start   boolen --指定会话模块是否在恳求开始时发动一个会话,默以为0不发动
session.serialize_handler   string --界说用来序列化/反序列化的处理器姓名。默许运用php
-当session.auto_start设置为True的时分或许手动session_start()创立新会话,PHP内部调会调用会话管理器。
- 下面是一段代码其间session_set_save_handler()设置用户自界说会话存储函数。此处仍是运用默许的存储方法以文件方法存储服务器,存储目录与装备文件中php.ini中的session.save_path相关。
- 下面这行代码因未设定序列化处理器的姓名,所以默许运用PHP中内置的序列化处理器(php)。
class FileSessionHandler
{
 private $savePath;
 function open($savePath, $sessionName)
 {
  $this->savePath = $savePath;
  if (!is_dir($this->savePath)) {
   mkdir($this->savePath, 0777);
  }
  echo __FUNCTION__."
";
  return true;
 }
 function close()
 {
  echo __FUNCTION__."
";
  return true;
 }
 function read($id)
 {
  echo __FUNCTION__."
";
  return (string)@file_get_contents("$this->savePath/sess_$id");
 }
 function write($id, $data)
 {
  echo __FUNCTION__."
";
  return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
 }
 function destroy($id)
 {
  $file = "$this->savePath/sess_$id";
  if (file_exists($file)) {
   unlink($file);
  }
  echo __FUNCTION__."
";
  return true;
 }
 function gc($maxlifetime)
 {
  foreach (glob("$this->savePath/sess_*") as $file) {
   if (filemtime($file) + $maxlifetime  time() && file_exists($file)) {
    unlink($file);
   }
  }
  echo __FUNCTION__."
";
  return true;
 }
 function end(){
  echo 'Script end then call register_shutdown_functiond'."
";
 }
}
$handler = new FileSessionHandler();
session_set_save_handler(
array($handler, 'open'),
array($handler, 'close'),
array($handler, 'read'),
array($handler, 'write'),
array($handler, 'destroy'),
array($handler, 'gc')
);
// 下面这行代码能够避免运用目标作为会话保存管理器时或许引发的非预期行为
register_shutdown_function(array($handler,end));
session_start();
上面代码履行的成果为
open
read
Script end then call register_shutdown_functiond
write
close
然后检查session.seve_path中的值,相应的目录能够看到如下相似文件
sess_fifslo9a7j78bv8koc0k4g0lk2 
sess_p4g23nl7mi7od8uohtpojd42b5
其间sess_后边的一串数值便是浏览器中的sessionid数值,翻开相对应的session文件(sess_fifslo9a7j78bv8koc0k4g0lk2 )可检查其内容发现如下:
name|s:2:"tb";
能够发现其为序列化之后的内容,当浏览器带着sessionid再次拜访脚本时,服务器端依据sessionid读取session文件并将其反序列化.
简略总结一下以上代码:
  其实便是经过session_start()手动创立新的会话,会话运用PHP内置序列化方法(php.ini中默许session.serialize_handler为php),经过session_set_save_handler()设定的方法进行存储
0×03.序列化引发的缝隙
PHP中有三种序列化方法
| 处理器         | 对应的存储格局    |

[1] [2]  黑客接单网

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://www.therlest.com/106070.html

分享给朋友:

“PHP序列化与反序列化解读” 的相关文章

华流年京东618怎么买便宜

京东618活动已经在火热进行中的哦,各位有买什么东西了吗?很多小伙伴在活动一开始的时候就迫不及待的买了很多东西了,还有些小伙伴还很犹豫不知道买啥,接下来百思特小编就来教教大家2020年京东618怎么便宜吧~ 京东618怎么买便宜 活动时...

接单的黑客_可以找黑客黑美团吗

有在网络安全范畴中,猜测网络违法和歹意软件发展趋势好像现已成为了各大网络安全公司的传统了。 为了防止让咱们去阅览上百页的安全陈述,咱们专门整兼并总结了McAfee、Forrester、FiskIQ、卡巴斯基实验室【1、2、3】、WatchGuard、Nuvias、FireEye、CyberArk、F...

黑客了解,中国黑客越南网络apt,黑客网站密码破解工具

6.42 · hxxp[://]offlineearthquake[.]com/file//?id=&n=000 进程三:使命履行及实时数据剖析10.61 2019年6月19日,FireEye Endpoint Security设备上收到了缝隙检测警报。 违规应用程序被辨认为Microso...

Webshell安全检测篇

0x00 依据流量的检测办法 1.概述 笔者一直在重视webshell的安全剖析,最近就这段时刻的心得体会和咱们做个共享。 webshell一般有三种检测办法: 依据流量方法 依据agent方法(本质是直接剖析webshell文件) 依据日志剖析方法 Webshell的分...

今天大蒜价格 - 大蒜期货行情

6点20元/市斤左右,2010年12月20日金乡,斑鸠店今日大蒜价格2012年8月21日,50元/市斤左右,回家的时候是4点5公分7?未来一段时间价格是涨还是降,印尼:2点70元/斤左右。小蒜:1点70元/斤左右。单位:元/千克,5点0-6点0公分:2点30-2点。 所以我感觉大蒜要是能存的话,印尼...

生猪猪价近10年走势图 「全国生猪价格猪e网」

从供给来看,同比年下降8点全国2。2012年4,希望能对你有所帮助。而且又赶上猪肉价格进入下行通道,上涨的原因分析一是生猪存栏减少,今日全国生猪均价继续维持震荡,现在正逢季节性淡季,量双增长市场供给量有后援保障。比2月25价格日。 散养户积极补栏使得苗猪价格迅速上升,1、我就是专业研究这个的,最新全...

评论列表

冬马猫卆
3年前 (2022-06-07)

.ini 分别为cli与apache2 如下列指令:root@ubuntu:/etc/php5# ll -l apache2/ cli/apache2/:total 156drwxr-xr-x 3 root root  4096 Dec 16 19:04 ./d

弦久娇痞
3年前 (2022-06-07)

r-- 1 root root 69568 Dec 11 17:39 php.ini-rw-r--r-- 1 root root 69570 Dec 11 17:39 php.ini~ 怎么确认apche2运用了哪个php.ini其实能够经过输出

只酷寒洲
3年前 (2022-06-07)

etime) {  foreach (glob("$this->savePath/sess_*") as $file) {   if (filemtime($file) + $maxlifetime  time() && file

森槿织谜
3年前 (2022-06-07)

中有php.ini 分别为cli与apache2 如下列指令:root@ubuntu:/etc/php5# ll -l apache2/ cli/apache2/:total 156drwxr-xr-x 3 root root  4096 Dec 16

澄萌雾敛
3年前 (2022-06-07)

_path相关。- 下面这行代码因未设定序列化处理器的姓名,所以默许运用PHP中内置的序列化处理器(php)。class FileSessionHandler{ pr

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。