zoukankan      html  css  js  c++  java
  • php域名授权后 网站才能访问 网站加密 防止拷贝

    网站A是开发好的一个成品站!可以免费/收费使用,或者条件啥!但是有点技术的可以拷贝源码搭建!B站就是授权后台网站

    防止普通用户拷贝就是授权!

    写了一个简单的访问控制!

    速度略有下降,但这点性能忽略不计!

    流程A站用户打开会去访问B站的接口 查询数据库是否授权 ,没授权就停止运行,授权就继续运行!  B站的接口判断是否同一个ip(有的用户可能是同一个ip绑定多个域名)

    A站代码如下

     1         // //访问网站
     2         $method = 'DES-ECB';//加密方法
     3         $passwd = 'qq496631085';//加密密钥
     4         $options = 0;//数据格式选项(可选)
     5         $iv = '';//加密初始化向量(可选)
     6         $url  = base64_decode('aHR0cDovL2FkbWluLmhlNDk2Ni5jbi9pbmRleC5waHAvYXBpL2hlL2dldGRhdGEvdXJsLw==').base64_encode(Request::domain());
     7         // halt($url);
     8         $result = file_get_contents($url);
     9         $jiemi2 = (openssl_decrypt($result, $method, $passwd, 0));
    10         $jiemi1 = substr($jiemi2,3,strlen($jiemi2)-7-3);
    11         $data = json_decode(base64_decode($jiemi1));
    12         $date = $data->date;
    13         if(strtotime($date)<time()+50){
    14             echo $data->msg;
    15             exit();
    16         }

    B站大概代码如下(初稿,没经过细节优化,时间来不及)B站是写的一个接口

      1     public function getdata()
      2     {   
      3 
      4 // json
      5 // 
      6 // endtime
      7 // lasttime
      8 // createtime
      9 // updatetime
     10 // deletetime
     11 // weigh
     12 // switch
     13 // state
     14 
     15         //获取域名 或者ip
     16         $data['ip'] = $this->request->ip();
     17         $data['url'] = base64_decode($this->request->param('url'));
     18         // halt($data);
     19         //先判断是否有这个ip和域名,
     20 
     21 
     22         $res = $this->addnew($data);
     23 
     24         $this->tongip($data);
     25         $res = Db::name('shouquan')
     26         ->where($data)
     27         ->find();
     28          
     29         // if(!$res){//没有就新增
     30             
     31         //     exit($this->no($data));
     32             
     33         // }else{//有就判断是否授权 !然后 返回数据
     34         
     35             if($res['state']==1){
     36                 //授权过的返回正常加密
     37                 // return json(['code'=>1,'data'=>$this->ok($data)]);
     38                 exit($this->ok($res));
     39             }else{
     40  
     41                 exit($this->no($data));
     42             }
     43         // }
     44         //views
     45 
     46         $data['title'] = '';//获取配置
     47         
     48         halt($data);
     49         $this->success('请求成功');
     50     }
     51 
     52 
     53     public function tongip($data)
     54     {
     55                 $tongip = Db::name('shouquan')
     56                 ->where('ip',$data['ip'])
     57                 ->where('state',1)
     58                 ->find();
     59                 if($tongip){
     60                     $this->addnew($data);
     61                     $update = Db::name('shouquan')->where($data)->update(['state'=>1,'updatetime'=>time()]);
     62                     exit($this->ok($data));
     63                 }else{
     64                     exit($this->no($data));
     65                 }
     66     }
     67 
     68     public function addnew($data)
     69     {
     70             
     71         $res = Db::name('shouquan')
     72         ->where($data)
     73         ->find();
     74         if(!$res){
     75             $data['endtime'] = 0;
     76             $data['createtime'] = time();
     77             $data['state'] = 0;
     78             $data['switch'] = 0;
     79             $insert = Db::name('shouquan')->insert($data);
     80             return true;
     81         }else{
     82                Db::name('shouquan')->where($data)->setInc('views');
     83             Db::name('shouquan')->where($data)->update(['lasttime'=>time()]);
     84             return false;//有数据
     85         }
     86     }
     87 
     88 
     89     public function ok($data = null)
     90     {   
     91         $json['date'] = date('Y-m-d H:i:s',strtotime(date('Y-m-d')." +1 day"));
     92         // $json['url'] =  $data['url'];
     93         // $json['ulr'] = 'http://admin.he4966.cn/index.php/api/he/ok';
     94         $json['ip'] =$data['ip'];
     95         $json['url'] =$data['url'];
     96 
     97         $strs = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
     98         $qian = substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),3);
     99         $hou = substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),7);
    100     //    var_dump(json_encode($json));
    101         $data1 = $qian.base64_encode(json_encode($json)).$hou;
    102 
    103         // var_dump($data);
    104         // echo '<br>加密前'.$data.'<br>';
    105         // $data = '1234567887654321';//加密明文
    106         $method = 'DES-ECB';//加密方法
    107         $passwd = 'qq496631085';//加密密钥
    108         $options = 0;//数据格式选项(可选)
    109         $iv = '';//加密初始化向量(可选)
    110 
    111 
    112         //加密:
    113         $result = openssl_encrypt($data1, $method, $passwd, $options);
    114         // var_dump($result);
    115         //结果:string(32) "kQYOdswcm9I5elv2wdJucplqAgqDNqXg"
    116 
    117 
    118 
    119         return $result;
    120         //解密
    121         // $result = 'kQYOdswcm9I5elv2wdJucplqAgqDNqXg';
    122         $jiemi2 = (openssl_decrypt($result, $method, $passwd, 0));
    123         // var_dump($jiemi2);
    124         // echo '<br>'.'解密后'.$jiemi2.'<br>';
    125         $jiemi1 = substr($jiemi2,3,strlen($jiemi2)-10);
    126         // var_dump($jiemi1);
    127         halt(json_decode(base64_decode($jiemi1)));
    128         //结果:string(16) "1234567887654321"
    129 
    130 
    131         halt(base64_encode($data));
    132         // return $json;
    133     }
    134 
    135     public function no($data = null)
    136     {   
    137         $json['date'] = date('Y-m-d H:i:s',time()+10);
    138         // $json['url'] =  $data['url'];
    139         // $json['ulr'] = 'http://admin.he4966.cn/index.php/api/he/ok';
    140         $json['msg'] = date("当前时间Y-m-d H:i:s")."<br>网站未授权请联系QQ496631085";
    141         $json['ip'] =$data['ip'];
    142         $json['url'] =$data['url'];
    143 
    144         $strs = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
    145         $qian = substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),3);
    146         $hou = substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),7);
    147     //    var_dump(json_encode($json));
    148         $data1 = $qian.base64_encode(json_encode($json)).$hou;
    149 
    150         // var_dump($data);
    151         // echo '<br>加密前'.$data.'<br>';
    152         // $data = '1234567887654321';//加密明文
    153         $method = 'DES-ECB';//加密方法
    154         $passwd = 'qq496631085';//加密密钥
    155         $options = 0;//数据格式选项(可选)
    156         $iv = '';//加密初始化向量(可选)
    157 
    158 
    159         //加密:
    160         $result = openssl_encrypt($data1, $method, $passwd, $options);
    161         // var_dump($result);
    162         //结果:string(32) "kQYOdswcm9I5elv2wdJucplqAgqDNqXg"
    163 
    164 
    165 
    166         return $result;
    167         //解密
    168         // $result = 'kQYOdswcm9I5elv2wdJucplqAgqDNqXg';
    169         $jiemi2 = (openssl_decrypt($result, $method, $passwd, 0));
    170         // var_dump($jiemi2);
    171         // echo '<br>'.'解密后'.$jiemi2.'<br>';
    172         $jiemi1 = substr($jiemi2,3,strlen($jiemi2)-7-3);
    173         // var_dump($jiemi1);
    174         halt(json_decode(base64_decode($jiemi1)));
    175         //结果:string(16) "1234567887654321"
    176 
    177 
    178         halt(base64_encode($data));
    179         // return $json;
    180     }

    QQ496631085

  • 相关阅读:
    Cnic.SafeNativeMethods
    KnockOut文档--模板绑定
    luoguP1120 小木棍 [数据加强版]
    luoguP1951 收费站_NOI导刊2009提高(2)
    luoguP1821 [USACO07FEB]银牛派对Silver Cow Party
    luoguP2991 [USACO10OPEN]水滑梯Water Slides
    luoguP4198 楼房重建
    (数位dp)吉利数字 区间k大
    数字游戏
    Amount of Degrees
  • 原文地址:https://www.cnblogs.com/xiaohe520/p/13498960.html
Copyright © 2011-2022 走看看