php看域控验证,php判断referer来源域进行白名单黑名单访问控制

最近大家有了sinaapp的php空间,这个东西可能可以用得到,写个基本例子大家参考(大家可以二次开发)

基本功能就是最简单的referer防盗链:

1,白名单就是只允许某些来源域

2,黑名单就是不允许某些来源域

//开发调试模式:显示错误报告,但不显示通知

//error_reporting(E_ERROR | E_WARNING | E_PARSE);

//上线模式:不显示任何错误报告

error_reporting(0);

//要进行判断的网站域名列表

//仅域名,全小写,注意前面不要加http://

//完全匹配,不支持通配符,需要通配符的可自行去写正则支持

$domain_list = array("cenfun.com", "bbs.cenfun.com", "www.cenfun.com");

//以上列表中的域名是否为黑名单,否则为白名单(默认)

//白名单就是只允许这些来源域

//黑名单就是不允许这些来源域

$is_black_list = FALSE;

//是否允许空来源(默认允许),就是如果来源页为空时,允许通过,否则必须要有正确的来源地址

//比如直接打开没有referer,还有Firefox中,wmp中,可能不一定每次都有referer来源地址

$allow_empty_referer = TRUE;

//回调函数==================================================================

//成功通过验证后要调用的程序,所有要做的事写到这里面

function succeed() {

echo "welcome";

}

//错误没有通过验证要调用的程序,比如返回一个错误页面,或返回一个错误信息,或一个含广告的列表

function error() {

echo "error";

}

//来源页判断===============================================================

//取得访问来源的地址

$referer = $_SERVER["HTTP_REFERER"];

if($referer) {

//解析来源地址

$refererhost = parse_url($referer);

//来源地址的主域名

$host = strtolower($refererhost['host']);

if($is_black_list) {

//如果是黑名单

if (in_array($host, $domain_list)) {

error();

} else {

succeed();

}

} else {

//如果是白名单

if($host == $_SERVER['HTTP_HOST'] || in_array($host, $domain_list)) {

succeed();

} else {

error();

}

}

} else {

if ($allow_empty_referer) {

succeed();

} else {

error();

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值