php学习之路-http协议,防盗链

php学习之路-http协议,防盗链

最近在学习php,今天主要是学习了有关http协议的相关知识,http协议是超文本传输协议(HTTP-Hypertext transfer protocol),底层是基于TCP/IP的,可以在网络中传输数据,图片,视频等。通过httpwatch这个软件,可以查看到所有的页面请求的信息,数据是由请求页面产生,因为我使用的是Apache,所以产生的数据会经过Apache的二次封装,会新增一些数据,在被请求的页面中可以通过$_SERVER这个数组获取到请求的信息。比较常用的有:REMOTE_ADDR(请求的ip),SERVER_PORT(端口号)等等。

然后我又进一步了解了http的两种不同请求的区别:POST和GET,区别主要有三点:

1.通过GET请求的数据会出现在http的地址中,而POST则是出现在请求的内容中。

2.GET请求发送的数据有大小限制为2083k,POST没有限制,因此传输的数据较大时,应该采用POST请求。

3.将页面保存设为收藏夹时,POST可以保存有参数的链接,而GET不能保存。

通过php中的HTTP_REFERER属性可以防盗链的效果,实现步骤如下:

  1.新建一个a.html文件,保存到桌面,内容如下:

<a href="http://localhost/http/info.php">查看信息</a>

2.在apache中的htdocs文件夹中新建一个http文件夹,并创建一个info.php,将a.html复制过来,info.php内容如下:

<?php

//判断HTTP_REFERER是否存在
if(isset($_SERVER['HTTP_REFERER'])){
//判断请求的来源是否是当前的项目
if(strpos($_SERVER['HTTP_REFERER'], "http://localhost/http")==0){
echo $_SERVER['HTTP_REFERER'];
echo "这是我的信息";
}
}else{
//访问拒绝,跳转到失败页面
header("Location:error.html");
}
?>

代码解释:首先通过isset()方法判断HTTP_REFERER是否存在,若存在,判断是否是以"http://localhost/http"开头,若返回为true,则访问正确,输出“这是我的信息”。

    若返回false,则跳转到失败的页面。

3.新建一个error.html页面,提示“访问被拒绝”。

小结:虽然使用这种方法可以简单的实现防盗链,但是可以防止就可以进行破解,如果对http的信息进行重写,那么就可以实现伪造一个HTTP_REFERER属性,从而达到

破解防盗链的网站,附上一段简单的实现方法,还在更深入的研究中。这是本人第一次写博客,希望大家多多指导,~~。

<?php

function getRemoteFile($url, $refer = '') { 
$option = array( 
'http' => array( 
'header' => "Referer:$refer") 
); 
$context = stream_context_create($option); 
return file_get_contents($url, false, $context); 



echo getRemoteFile("http://localhost/http/info.php");


?>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值