PHP实现防盗链的方法分析

防盗链是指在网页制作和浏览时,为防止他人在未经允许情况下盗用自己网站资源,也就是防止其他网站将本站的图片等媒体资源引用到自己的网站上。

PHP实现防盗链的方法分析

什么是防盗链?

防盗链是指在网页制作和浏览时,为防止他人在未经允许情况下盗用自己网站资源,也就是防止其他网站将本站的图片等媒体资源引用到自己的网站上。

PHP实现防盗链的方法

方法一:根据Referrer来判断

在HTTP请求头中,将发送来请求的页面地址和该页面上的链接按照上述格式传送给服务器,这个“发送来请求的页面地址”就是Referrer。

例如:若A网站上有一张图片,B网站引用的时候通过URL的方式指向了A网站的图片,那么在A网站的服务器里,也就是接收方式,服务器判断远程那个网站在调用自己的资源的时候,就会根据请求头中的Referer信息验证调用者是否是合法的网站。

代码示例:

$referer = $_SERVER['HTTP_REFERER'];
// 判断refer是否为空
if (empty($referer)) {
    echo "无referer访问";
    exit;
}
// 解析当前url
$url = parse_url($referer);
// 获取域名
$refererHost = $url['host'];
// 定义被允许的域名
$allowHosts = array('example1.com', 'example2.com');
// 判断访问的是否允许的refer
if (!in_array($refererHost, $allowHosts)) {
    echo "访问来源不允许";
    exit;
}

方法二:直接判断HTTP请求头

这个方法与上面的方法类似,不过是直接判断HTTP请求头部包含的关键字,比如公司名称、域名等。这种方式简单实用,但可以被特定的请求头绕过,需要注意。

代码示例:

if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
    echo "非法访问";
    exit;
}

总结

以上是PHP实现防盗链的两种方法,具体使用什么方法可以根据实际情况来选择。需要注意的一点是,防盗链是不能百分百防止盗链,只能降低盗链的概率。

本文标题为:PHP实现防盗链的方法分析

基础教程推荐