当前位置: 首页 > 后端技术 > PHP

PHP时不时弹出这串神秘字符,你知道吗?

时间:2023-03-29 16:26:51 PHP

有这样一个字符串,时不时的在PHP程序中显示出来。当你粘贴到搜索引擎中进行搜索时,命中率几乎为零。它是怎么来的?它是如何产生的?  今天我们来聊聊YTowOnt9。  深度学习  经常涉及编码和解码。对于这样的字符串,你应该有一个潜意识的认识。是不是特别喜欢base64encode之后的内容。我们先用一些随机数,看看base64encode后是什么样子的。  为了模拟PHP的情况,我们没有使用linux系统下的base64工具,而是使用了内置函数base64_encode。  为了得到定长的随机字符串,我们使用上一篇文章推荐的方法,使用openssl_random_pseudo_bytes生成更好的随机数字节,然后使用bin2hex十六进制化,得到的结果是一个纯字符串。  如果你对上面的字符进行base64解码,你会得到什么?  echobase64_decode('YTowOnt9');  在命令行中执行得到如下输出。  a:0:{}  如果你用过PHP内置的序列化功能,应该对这个不陌生。我们来看看序列化函数serialize。在序列化对象并将它们存储在缓存中,甚至在数据库中时,您一定已经看到了它。  serialize返回一个字符串,其中包含表示值的字节省,可以存储在任何地方。这有利于存储或传递PHP值而不会丢失其类型和结构。  举个简单的例子,比如不同数据类型的数组序列化:  $arrToPack=array('Loremipsumdolorsitamet',8726348723,true);echoserialize($arrToPack);  输出:  a:3:{i:0;s:26:"Loremipsumdolorsitamet";i:1;i:8726348723;i:2;b:1;}  可以看到序列化后的内容,包括数组内容、结构、长度和价值。反序列化时,很容易实现。  公布答案  好了,前面的基础内容我们已经打好了基础,现在我们重点来反序列化这个字符串,看看能得到什么。  var_dump(反序列化(base64_decode(“YTowOnt9”)));  结果输出:  array(0){}  竟然是一个空数组。  写在最后的  ,所以我们以后看到这样一个编码后的字符串,心里会有一个认识,判断应该生成程序的哪个阶段,用来做什么,这样调试起来就会容易很多。