<tfoot id='tZiVC'></tfoot>
    <i id='tZiVC'><tr id='tZiVC'><dt id='tZiVC'><q id='tZiVC'><span id='tZiVC'><b id='tZiVC'><form id='tZiVC'><ins id='tZiVC'></ins><ul id='tZiVC'></ul><sub id='tZiVC'></sub></form><legend id='tZiVC'></legend><bdo id='tZiVC'><pre id='tZiVC'><center id='tZiVC'></center></pre></bdo></b><th id='tZiVC'></th></span></q></dt></tr></i><div id='tZiVC'><tfoot id='tZiVC'></tfoot><dl id='tZiVC'><fieldset id='tZiVC'></fieldset></dl></div>

    <small id='tZiVC'></small><noframes id='tZiVC'>

      <bdo id='tZiVC'></bdo><ul id='tZiVC'></ul>

    1. <legend id='tZiVC'><style id='tZiVC'><dir id='tZiVC'><q id='tZiVC'></q></dir></style></legend>
      1. PHP防盗链代码实例

        时间:2023-12-12

          <small id='kvRa1'></small><noframes id='kvRa1'>

          <tfoot id='kvRa1'></tfoot>
            <bdo id='kvRa1'></bdo><ul id='kvRa1'></ul>
            <i id='kvRa1'><tr id='kvRa1'><dt id='kvRa1'><q id='kvRa1'><span id='kvRa1'><b id='kvRa1'><form id='kvRa1'><ins id='kvRa1'></ins><ul id='kvRa1'></ul><sub id='kvRa1'></sub></form><legend id='kvRa1'></legend><bdo id='kvRa1'><pre id='kvRa1'><center id='kvRa1'></center></pre></bdo></b><th id='kvRa1'></th></span></q></dt></tr></i><div id='kvRa1'><tfoot id='kvRa1'></tfoot><dl id='kvRa1'><fieldset id='kvRa1'></fieldset></dl></div>

                <tbody id='kvRa1'></tbody>
              • <legend id='kvRa1'><style id='kvRa1'><dir id='kvRa1'><q id='kvRa1'></q></dir></style></legend>

                  PHP防盗链是在服务器判断HTTP请求来源,如果来源不合法就拒绝请求,从而保护原服务器资源不被其他恶意网站盗链的技术手段。具体实现方法如下:

                  1. 设置HTTP_REFERER

                  在HTTP请求头中的Referer字段,记录了请求来源的信息,其值为当前请求的URL。可以通过判断该字段的值是否符合条件,来判断是否为合法请求。比如以下PHP代码示例中,使用$_SERVER['HTTP_REFERER']获取请求的来源,然后通过strpos函数检测Referer中是否包含了指定的合法域名,如果包含则允许访问,否则拒绝访问。

                  $referer = $_SERVER['HTTP_REFERER'];
                  if(strpos($referer, 'example.com') !== false){
                      // 合法请求,允许访问
                  }else{
                      // 非法请求,拒绝访问
                      header("HTTP/1.1 403 Forbidden");
                      exit;
                  }
                  

                  2. 动态生成防盗链链接

                  如果将防盗链代码硬编码在页面中,容易被恶意网站绕过。为了增加防盗链的难度,我们可以使用服务器端动态生成防盗链链接。比如以下PHP代码示例中,通过生成带有加密参数的URL,访问者必须先解密参数,才能访问资源,从而增加了防盗链的难度。

                  $file_path = '/path/to/file'; // 文件路径
                  $secret_key = 'abcdefg'; // 秘钥
                  
                  // 生成防盗链链接
                  function getAntiLeechUrl($file_path, $secret_key)
                  {
                      $timestamp = time();
                      $url = 'http://example.com' . $file_path . '?t=' . $timestamp;
                      $enc = md5($secret_key . $url . $timestamp);
                      return $url . '&e=' . $enc;
                  }
                  
                  // 判断是否为合法请求
                  function isValidRequest($file_path, $secret_key)
                  {
                      $referer = $_SERVER['HTTP_REFERER'];
                      if(strpos($referer, 'example.com') !== false){
                          $url = 'http://example.com' . $file_path;
                          $timestamp = $_GET['t'];
                          $enc = $_GET['e'];
                          return $enc === md5($secret_key . $url . $timestamp);
                      }
                      return false;
                  }
                  
                  // 检测是否是合法请求
                  if(isValidRequest($file_path, $secret_key)){
                      // 合法请求,输出文件内容
                      readfile($file_path);
                  }else{
                      // 非法请求,拒绝访问
                      header("HTTP/1.1 403 Forbidden");
                      exit;
                  }
                  

                  以上两种方法都可以用于防御盗链攻击,并且可以根据需要进行适当的修改来加强安全性。

                  上一篇:PHP实现简单用户登录界面 下一篇:PHP htmlspecialchars() 函数实例代码及用法大全

                  相关文章

                  <legend id='DTC1m'><style id='DTC1m'><dir id='DTC1m'><q id='DTC1m'></q></dir></style></legend>
                  <i id='DTC1m'><tr id='DTC1m'><dt id='DTC1m'><q id='DTC1m'><span id='DTC1m'><b id='DTC1m'><form id='DTC1m'><ins id='DTC1m'></ins><ul id='DTC1m'></ul><sub id='DTC1m'></sub></form><legend id='DTC1m'></legend><bdo id='DTC1m'><pre id='DTC1m'><center id='DTC1m'></center></pre></bdo></b><th id='DTC1m'></th></span></q></dt></tr></i><div id='DTC1m'><tfoot id='DTC1m'></tfoot><dl id='DTC1m'><fieldset id='DTC1m'></fieldset></dl></div>

                  1. <small id='DTC1m'></small><noframes id='DTC1m'>

                      <bdo id='DTC1m'></bdo><ul id='DTC1m'></ul>
                    <tfoot id='DTC1m'></tfoot>