php获取referer防非法访问

1. 什么是referer?

referer是HTTP协议的一个头部字段,在HTTP请求头中指明了请求来源,即访问该页面的前一个页面的URL地址。

通过referer我们可以获取用户跳转到当前页面所在的URL,从而判断是否允许用户访问当前页面。

//获取referer的值

$referer = $_SERVER['HTTP_REFERER'];

2. 防止非法访问

2.1 什么是非法访问

非法访问是指未经允许或者不合理的方式来访问一个页面,例如跨站点攻击、爬虫爬取等。

2.2 防止非法访问的方法

为了防止非法访问,我们可以通过判断当前访问的页面的referer信息是否合法来进行验证。

//判断referer是否为空

if(!empty($_SERVER['HTTP_REFERER'])){

//获取当前访问页面的domain(域名)

$current_host = parse_url($_SERVER['HTTP_REFERER'])['host'];

//获取当前页面的domain

$target_host = $_SERVER['SERVER_NAME'];

//判断当前访问的页面是否为本站页面

if($current_host != $target_host){

//禁止非法访问,返回错误信息

echo "非法访问!";

exit;

}

}

2.3 REFERER信息伪造攻击的防范

REFERER信息是由客户端浏览器发送到服务器的,是可以被伪造的。如果不加以防范,就可能造成安全漏洞。对于此类攻击,我们可以采用如下方法进行预防:

使用SSL:采用SSL加密,可以有效预防Referer信息被截获和篡改。

Referer check:在业务层面上对Referer信息进行校验和检查。

后端开发标签