基于PHP实现解密或加密Cloudflar邮箱保护

吾爱主题 阅读:134 2021-10-18 14:54:00 评论:0

Cloudflare 有一项功能挺不错的,就是将页面上所有的邮箱地址都加密起来,防止机器人抓到然后干坏事。

这项功能要在后台开启 email address obfuscation

之后就可以在页面上加入一个邮箱地址,比如说 abc@abc.com

查看源代码就能发现类似如下的代码

?
1 2 3 4 5 6 <a class= "__cf_email__" data-cfemail= "30515253705152531e535f5d" href= "/cdn-cgi/l/email-protection" rel= "external nofollow" > [email protected] < /a > <script data-cfhash= "f9e31" type = "text/javascript" >   /* <![CDATA[ */! function (t,e,r,n,c,a,p){try{t=document.currentScript|| function (){ for (t=document.getElementsByTagName( 'script' ),e=t.length;e--;) if (t[e].getAttribute( 'data-cfhash' )) return t[e]}(); if (t&&(c=t.previousSibling)){p=t.parentNode; if (a=c.getAttribute( 'data-cfemail' )){ for (e= '' ,r= '0x' +a.substr(0,2)|0,n=2;a.length-n;n+=2)e+= '%' +( '0' +( '0x' +a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */ < /script >

我们可以使用 PHP 的方式将这个邮箱地址解密出来

?
1 2 3 4 5 6 7 8 function deCFEmail($encode){      $k = hexdec(substr($encode,0,2));      for ($i=2, $m= '' ; $i < strlen($encode) - 1; $i += 2){          $m.=chr(hexdec(substr($encode, $i, 2))^$k);      }      return $m; } echo deCFEmail( "30515253705152531e535f5d" ). "\n" ;


得到的结果就是上面所说的 abc@abc.com

但是我们不想用 Cloudflare 的相关服务,就是单纯想用他这种加密技术,所以我们就得将加密的算法也找出来

我们可以利用上面解密的代码反向执行,就可以得到一个加密的算法了

?
1 2 3 4 5 6 7 8 9 function encodeEmail($email, $key=0) {      $chars = str_split($email);      $string = '' ;      $key = $key ? $key : rand(10, 99);      foreach ($chars as $value) {          $string .= sprintf( "%02s" , dechex(ord($value)^$key));      }      return dechex($key).$string; }

我们就能利用这个加密算法,将手机号、邮箱地址、身份证等各种敏感的信息都加密起来,防止别人能轻易的抓取到数据

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.shiniv.com/2016/09/decode-encode-cloudflare-address-obfuscation/

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容