使用PHP验证文件是否遭到篡改,比如WordPress主题防盗版
December 5, 2022 [ 上次更新于 1 年前 ]
216 0 无人评论
因为最近在帮朋友写一个WP的插件授权功能,验证逻辑很简单,就是用 file_get_contents()
比对文件就好了。
稍微改了一下就可以验证主题模板的文件是否完整了。
//我先随便找个地方宣布个全局参数
global $type_key;
//如果从远端验证
$type_key = get_data();
//如果从本地验证
//$type_key = 'www.yeraph.com';
//curl获取验证信息,这里假设接口返回的是一段text格式文本'www.yeraph.com'
function get_data(){
//验证接口的地址
$url = 'https://api.yeraph.com/info';
//创建一个curl会话
$info = curl_init();
//配置curl参数
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
//加载需要访问的url
curl_setopt($info,CURLOPT_URL,$url);
//返回获取的内容
$output = curl_exec($info);
return $output;
//关闭curl会话防止出错
curl_close($info);
}
//再随便找个地方加载验证函数
function type_data(){
global $type_key;
//需要验证的文件,这里是加载了主题的index文件
$type_file = ''.get_template_directory().'/index.php';
//加载这个文件
$file_data = file_get_contents($type_file);
//比对文件内容,如果文件中不包含文本 www.yeraph.com ,就
if (strstr($file_data, $type_key) == false){
//die就完事了
die('寄了');
}else{
return('');
}
}
//再再随便找个地方运行函数
type_data();
如果验证失败,进程就直接“寄了”。
get_template_directory()
是WP自带的一个函数,会直接返回主题的绝对路径(但是这个路径是不输出 / 的)。
curl_setopt()
是curl的配置函数,支持的功能很多,比如ssl验证的。
如果真要用的话用base64_encode()
之类的把必要的参数保护起来,省得被直接搜索出来。
因为这里没打算写验证接口的逻辑,直接假设我这个接口返回的是一段text格式文本,真要用的时候验证逻辑自己考虑嗷。
感觉这个逻辑用处很多,可以验证文件hash、验证授权、验证版权文本、之类的,函数放置的位置越诡异,防盗效果越好。
每天一点制造屎山小技巧。
感觉我好像莫名其妙的琢磨明白了大部分主题的授权逻辑呢。
另外别问我为什么2202年还在写PHP,问就是我菜比。
站点声明:本站部分内容转载自网络,作品版权归原作者及来源网站所有,任何内容转载、商业用途等均须联系原作者并注明来源。
评论列表 0
暂无评论