php怎么使用防盗链图片

不及物动词 其他 135

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在PHP中,可以通过以下几种方式来防止图片盗链:

    1. 引入HTTP_REFERER检查:在服务器端对请求的HTTP_REFERER进行检查,判断请求来源是否为合法的网站。如果不是,则返回一个错误提示信息或者替代图片。

    “`php
    “;
    } else {
    // 显示替代图片或错误提示信息
    echo “Image“;
    }
    ?>
    “`

    2. 使用防盗链HTTP响应头:通过在服务器端设置防盗链的HTTP响应头,只允许指定的域名或URL访问图片。非法的请求将返回403 Forbidden错误。

    “`php
    “;
    } else {
    // 返回403 Forbidden错误
    header(“HTTP/1.1 403 Forbidden”);
    echo “Access forbidden!”;
    }
    ?>
    “`

    3. 使用验证码验证:在图片加载页面添加一个验证码,并在服务器端验证验证码的正确性。只有验证通过的请求才能正常显示图片。

    “`php

    “;
    ?>


    “;
    } else {
    // 显示替代图片或错误提示信息
    echo “Image“;
    }
    ?>
    “`

    以上是三种常用的防盗链图片的方法,可以根据实际需求选择适合的方式进行防盗链操作。

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

    使用防盗链图片的方法有多种,以下是具体的步骤和技巧:

    1. 配置服务器:首先,需要在服务器上进行配置,禁止其他网站直接访问你的图片。可以通过修改服务器配置文件或者使用防盗链插件实现。配置的具体步骤根据使用的服务器类型而有所不同。

    2. Referrer 检测:通过检测客户端的 Referrer 头信息来确定是否为合法访问。可以在服务器端编写脚本进行判断,如果发现 Referrer 不是来自指定的域名,则禁止访问图片。

    3. 生成签名:通过生成独特的签名来防止盗链。可以使用时间戳、加密算法等方式生成签名,并将签名作为参数添加到图片访问链接中。服务器端根据签名进行验证,如果签名不匹配,则禁止访问。

    4. 限制时间或次数:可以设置图片的有效期或者允许访问的次数来防止盗链。例如,可以设置图片链接在一定时间后过期,或者限制每个链接的访问次数。

    5. 图片水印:可以在图片上添加水印来标识图片来源,防止被盗链使用。水印可以是文字、图片或者透明的图层,可以在服务器端实时添加水印,也可以预先在图片上添加水印。

    通过以上方法,可以有效地防止盗链图片的使用,并保护图片的版权和使用权。但需要注意的是,无法完全阻止盗链,只能增加盗链者的使用成本和难度。同时,防盗链也可能给正常访问者带来一定的不便,需要根据实际情况进行权衡和调整。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    使用防盗链图片是为了防止其他网站直接加载你的图片,从而减少你的服务器资源消耗。下面是流程:

    1. 检查HTTP_REFERER头信息

    PHP中可以通过`$_SERVER[‘HTTP_REFERER’]`来获取请求来源,可以使用以下方式来防止盗链:
    “`php
    $refer = $ _SERVER [ ‘HTTP_REFERER’ ];
    $allowed_domains = [ ‘example.com’ , ‘subdomain.example.com’ ];
    if ( $refer && !in_array ( parse_url ( $refer , PHP_URL_HOST ), $allowed_domains )) {
    // 非法盗链
    header ( ‘HTTP/1.1 403 Forbidden’ );
    exit;
    }
    “`
    在上面的例子中,我们定义了一个允许访问的域名数组,然后检查请求的referer是否在这个数组中。如果referer为null或者不在允许的域名数组中,那么返回403 Forbidden。

    2. 确认请求是否为图片类型

    为了更严格的检查图片类型,我们可以使用`getimagesize()`函数来判断响应内容的媒体类型是否为图片。

    “`php
    $info = getimagesize ( ‘path/to/image.jpg’ );
    if ( $info === false || !in_array ( $info [ ‘mime’ ], [ ‘image/jpeg’ , ‘image/png’ , ‘image/gif’ ])) {
    // 不是图片类型
    header ( ‘HTTP/1.1 403 Forbidden’ );
    exit;
    }
    “`
    在上面的例子中,我们使用`getimagesize()`函数来获取图片信息,然后检查其mime类型是否为`image/jpeg`或`image/png`或`image/gif`,如果不是这些类型,则返回403 Forbidden。

    3. 生成临时URL

    如果以上两个方法都无法达到预期的效果,我们可以生成一个临时URL,只在请求时才有效。

    “`php
    $secret_key = ‘random_secret_key’;
    $expiration = time () + 5 * 60 ; // 设置有效期为5分钟

    $original_url = ‘path/to/image.jpg’;
    $token = md5 ( $secret_key . $original_url . $expiration );
    $temp_url = ‘http://example.com/temp_image.php?token=’ . $token . ‘&expires=’ . $expiration . ‘&url=’ . urlencode ( $original_url );
    “`
    在上面的例子中,我们使用了一个秘密密钥,将原始URL、过期时间等变量进行加密后生成一个token,然后将token和其他参数添加到临时URL中。

    在 `temp_image.php` 中,我们可以解密token,并根据token中的信息来判断请求是否合法。

    这是一个简单的防盗链图片的方法,根据不同的需求场景和安全要求,你可以根据这个思路来进行更加复杂的实现。

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

400-800-1024

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

分享本页
返回顶部