php怎么设置防盗链

不及物动词 其他 182

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    防盗链是指网站拒绝其他非法的网站通过引用(链接)的方式直接使用自己的资源。在PHP中,可以通过以下几种方式来设置防盗链。

    一、检查HTTP_REFERER字段
    当用户访问一个链接时,其HTTP请求头中会包含一个referer字段,该字段记录了用户是从哪个链接跳转而来。可以通过判断referer字段来确定用户是否是从合法的网站跳转而来的。

    代码示例:
    “`php
    $referer = $_SERVER[‘HTTP_REFERER’];
    if(strpos($referer, ‘YourDomain.com’) === false) {
    die(“非法访问!”);
    }
    “`

    二、使用Apache配置文件
    可以通过修改Apache的配置文件来设置防盗链。在.htaccess文件中添加以下代码,即可拒绝其他网站对自己资源的引用。

    代码示例:
    “`htaccess
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?YourDomain.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]
    “`

    三、使用PHP的header函数
    PHP的header函数可以设置响应头信息,通过设置响应头中的”Referrer-Policy”字段来控制防盗链。

    代码示例:
    “`php
    header(“Referrer-Policy: no-referrer-when-downgrade”);
    “`

    以上是几种常见的防盗链方式,可以根据实际需求选择适合自己的方式来设置防盗链。需要注意的是,防盗链能够一定程度上阻止其他非法网站使用自己的资源,但无法完全杜绝盗链行为,因为referer字段可以被伪造。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    1. 使用htaccess文件:在网站的根目录下创建一个名为.htaccess的文件,并添加以下代码:

    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite\.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]

    这段代码的作用是,检查HTTP请求的来源(即HTTP_REFERER)是否为空,并且不是yourwebsite.com(你的网站域名)才允许访问图片文件(jpg、jpeg、png、gif),否则返回403 Forbidden错误。

    2. 使用PHP代码:在你想要防盗链的图片URL上添加以下代码:
    $allowed_domains = array(‘yourwebsite.com’); // 允许访问的域名
    $referer = $_SERVER[‘HTTP_REFERER’];
    if ($referer != “” && !in_array(parse_url($referer, PHP_URL_HOST), $allowed_domains)) {
    // 非法访问,输出一张默认图片或重定向到其他页面
    header(‘Location: error.jpg’);
    exit;
    }
    这段代码首先将允许访问的域名保存在一个数组中,然后获取HTTP_REFERER请求头字段,检查其来源域名是否在允许访问的域名列表中,如果不在,则返回一个默认图片或重定向到其他页面。

    3. 使用CDN防盗链设置:如果你使用了CDN(Content Delivery Network)来加速网站加载速度,那么大多数CDN提供商都会有防盗链设置,可以在CDN控制台中找到相关设置。根据你使用的CDN提供商不同,具体设置方法会有所不同。

    4. 隐藏图片真实URL:将图片URL进行加密或混淆,使其不易被盗链网站获取。可以使用PHP的base64_encode函数对图片URL进行加密,然后在网页中用base64_decode函数解密并显示图片。不过这种方法可能会对网站加载速度产生一定影响。

    5. 动态生成图片链接:将图片链接改为通过程序动态生成的链接,每一次请求都会生成一个新的链接。可以通过在URL中添加时间戳、随机字符串等参数实现。这样即使盗链网站获取到了一个图片链接,也无法再次使用该链接获取图片。

    以上是一些常用的防盗链方法,可以根据实际情况选择合适的方法来防止图片的盗链问题。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    防盗链是一种保护网站资源不被其他网站非法使用的措施。在 PHP 中,我们可以通过一些方法来设置防盗链。

    一、设置 HTTP Referer 检查
    在 PHP 中,可以通过检查 HTTP 请求的 Referer 字段来判断请求是否是来自本站。如果 Referer 不在允许的域名列表中,则认为是盗链请求。

    下面是设置 HTTP Referer 检查的操作流程:

    1. 获取 HTTP 请求的 Referer 字段,可以使用 $_SERVER[‘HTTP_REFERER’] 获取。
    2. 检查 Referer 是否在允许的域名列表中,如果不在则认为是盗链请求。

    代码示例:

    “`php
    $referer = $_SERVER[‘HTTP_REFERER’];
    $allowedDomains = [‘http://example.com’, ‘http://www.example.com’];

    if (!in_array($referer, $allowedDomains)) {
    // 不在允许的域名列表中,执行防盗链操作
    }
    “`

    二、生成防盗链 token
    除了使用 HTTP Referer 检查外,还可以生成一个防盗链的 token,只有带有正确的 token 的请求才能访问资源。

    下面是生成防盗链 token 的操作流程:

    1. 根据一定的规则生成一个 token,可以使用随机字符串函数来生成。
    2. 将生成的 token 附加到资源的请求 URL 中。
    3. 在资源的处理程序中,检查请求中是否带有正确的 token,如果没有则认为是盗链请求。

    代码示例:

    “`php
    $token = generateToken(); // 生成防盗链 token
    $url = ‘http://example.com/resource.jpg?token=’ . $token; // 在资源 URL 中附加 token

    if (isset($_GET[‘token’]) && $_GET[‘token’] === $token) {
    // 请求中带有正确的 token,执行资源处理操作
    }
    “`

    三、使用 Rewrite 规则
    除了 PHP 内部设置防盗链外,还可以使用 Web 服务器的 Rewrite 规则来实现防盗链。

    下面是使用 Rewrite 规则设置防盗链的操作流程:

    1. 在 Web 服务器的配置文件中,添加 Rewrite 规则。
    2. 根据规则,判断请求的 Referer 域名是否在允许的域名列表中,如果不在则重定向到错误页面。

    示例 Apache Rewrite 规则:

    “`
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ http://yourdomain.com/error.html [NC,R,L]
    “`

    通过以上方法,我们可以有效地设置防盗链,保护网站资源不被盗链。需要注意的是,这些方法并不能完全防止盗链,只能增加盗链的难度。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部