基于PHP实现解密或加密Cloudflar邮箱保护
作者:枫之落叶 时间:2023-07-22 13:22:37
Cloudflare 有一项功能挺不错的,就是将页面上所有的邮箱地址都加密起来,防止机器人抓到然后干坏事。
这项功能要在后台开启 email address obfuscation
之后就可以在页面上加入一个邮箱地址,比如说 abc@abc.com
查看源代码就能发现类似如下的代码
<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 的方式将这个邮箱地址解密出来
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 的相关服务,就是单纯想用他这种加密技术,所以我们就得将加密的算法也找出来
我们可以利用上面解密的代码反向执行,就可以得到一个加密的算法了
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/
标签:PHP,解密,加密,Cloudflar,邮箱
0
投稿
猜你喜欢
Linux中大内存页Oracle数据库优化的方法
2023-07-19 11:24:57
python读写ini文件示例(python读写文件)
2023-06-21 03:10:14
解决python明明pip安装成功却找不到包的问题
2021-05-21 14:50:40
Python开发的实用计算器完整实例
2023-07-25 17:11:53
浅谈JavaScript的自动垃圾收集机制
2023-08-13 15:18:57
如何用Python和JS实现的Web SSH工具
2021-04-23 13:50:13
golang正则之命名分组方式
2024-05-22 10:17:10
python tkinter实现学生信息管理系统
2021-11-01 18:46:16
asp如何实现网上考试功能?
2010-05-24 18:32:00
MySQL8.0的WITH查询详情
2024-01-24 16:43:16
IE地址栏显示网站图标制作方法
2007-10-13 11:08:00
mysql怎么设置最大连接数详解
2024-01-24 04:44:55
MSSQL优化之探索MSSQL执行计划(转)
2011-11-03 17:16:21
Vue日期时间选择器组件使用方法详解
2024-05-02 16:35:27
MySQL如何删除表中的数据
2024-01-13 00:12:41
深入了解Hybrid App技术的相关知识
2023-08-10 09:36:02
ASP动态生成的javascript表单验证代码
2008-10-13 20:11:00
Python学习之字符串常用操作详解
2022-07-14 18:54:48
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2024-04-27 15:47:30
中国传统色彩名录
2007-11-29 18:36:00