php 伪造HTTP_REFERER页面URL来源的三种方法
php获取当前页面的前一个页面URL地址,即当前页面是从哪个页面链接过来的,可以使用$_SERVER['HTTP_REFERER'];
但是$_SERVER['HTTP_REFERER']也是可以被伪造欺骗的,有三种方法可以伪造和欺骗$_SERVER['HTTP_REFERER']
注:window平台 使用phpstudy集成环境 nginx 此方法失效 ,apache 正常,其他平台版未测试
第一种方法:file_get_contents
$url = "http://localhost/test/test.php";
$refer="http://www.aa.com";
$opt=array('http'=>array('header'=>"Referer: $refer"));
$context=stream_context_create($opt);
$file_contents = file_get_contents($url,false, $context);
echo $file_contents;
file_get_contents中stream_context_create就伪造来源的重要参数了。
第二种方法:CURL
$url = "http://localhost/test/test.php"; // 请求的页面地址
$refer="http://www.aa.com"; //伪造的页面地址
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL,$url);
curl_setopt ($ch, CURLOPT_REFERER,$refer);
curl_exec ($ch);
curl_close ($ch);
第三种方法:fsockopen
$url="http://localhost/test/test.php";
$target = "http://www.manongjc.com/";
/** sockopen 伪造 网站来源地址
* @parem $url 要访问的页面地址
* @parem $target 伪造来源页面
* @parem $port 网站端口 默认 80
* @parem 页面脚本执行时间 默认 30 s
* */
function referer($url,$target,$port=80,$t=30)
{
$info=parse_url($url);
$fp = fsockopen($info["host"], $port, $errno, $errstr, $t);
if(!$fp)
{
echo "$errstr($errno)".PHP_EOL;
}
else
{
$out = "GET ".$info['path']." HTTP/1.1".PHP_EOL;
$out .= "Host: ".$info["host"].PHP_EOL;
$out .= "Referer: ".$target.PHP_EOL;
$out .= "Connection: Close".PHP_EOL;
$out .= PHP_EOL;
fwrite($fp, $out);
while(!feof($fp))
{
echo fgets($fp); // 发送 head 请求头信息
}
fclose($fp);
}
}
//函数调用
referer($url,$target);
php 伪造HTTP_REFERER页面URL来源的三种方法的更多相关文章
- 打印web页面指定区域的三种方法
本文和大家分享一下web页面实现指定区域打印功能的三种方法,一起来看下吧. 第一种方法:使用CSS 定义一 个.noprint的class,将不打印的内容放入这个class内. 代码如下: <s ...
- ASP.NET页面跳转的三种方法比较
在ASP.NET下,经常需要在页面之间跳转,下面我们来分别介绍一下关于.NET中Response.Redirect(),Sever.Execute(),Server.Transfer() 三种页面跳转 ...
- Jquery 页面初始化常用的三种方法以及Jquery 发送ajax 请求
第一种 $(document).ready(function(){ //文档就绪事件 }); 第二种是第一种的简略写法,效果上和第一种是等效的. $(function(){ //文档加载事件,整个文档 ...
- ionic2 中隐藏子页面tabs选项卡的三种方法
第一种: 隐藏全部子页面的tabs选项界面 找到app.module.ts文件 ,修改如下代码 imports: [ IonicModule.forRoot(MyApp,{ tabsHideOnSub ...
- PHP URL 重定向 的三种方法(转载)
为了方便查询,转载一篇. 1.使用header()函数 PHP的HTTP相关函数种提供了一个 header()函数,首先要清楚,header()函数必须放在php程序的开头部分,而且之前不能有另 ...
- nodejs解析url参数的三种方法
要解析的url:http://127.0.0.1:8090/?name=cpc&age=21 利用js字符串操作函数进行解析 const myserver = require("ht ...
- YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法
上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...
- asp.net跳转页面的三种方法比较
目前,对于学习asp.net的很多朋友来讲,实现跳转页面的方法还不是很了解.本文将为朋友们介绍利用asp.net跳转页面的三种方法,并对其之间的形式进行比较,希望能够对朋友们有所帮助. ASP.NET ...
- React Router v4 页面传值的三种方法
传值方法 1.props.params 使用React router定义路由时,我们可以给指定一个path,然后指定通配符可以携带参数到指定的path: <Route path='/user/: ...
随机推荐
- TS封装格式
ts流最早应用于数字电视领域,其格式非常复杂包含的配置信息表多达十几个,视频格式主要是mpeg2.苹果公司发明的http live stream流媒体是基于ts文件的,不过他大大简化了传统的ts流,只 ...
- 【Android 多媒体应用】使用 TTS
import java.util.Locale; import android.app.Activity; import android.os.Bundle; import android.speec ...
- java,js判断全角半角
function chkHalf(str){ for(var i=0;i { strCode=str.charCodeAt(i); if((strCode>65248)||(strCode==1 ...
- dp-矩阵连乘
参考:http://blog.csdn.net/liufeng_king/article/details/8497607 使用备忘录算法复杂度降至O(n^3) #include<stdio.h& ...
- FTP 命令 上传下载
ftp ftp [-v] [-n] [-i] [-d] [-g] [-s:filename] [-a] [-w:windowsize] [computer] 参数-v 禁止显示远程服务器响应.-n ...
- Android常用开源库集合【持续更新】
1.FastJson 阿里巴巴工程师做的一个方便的JSON转换库 2.ButterKnife 只要作用能代替代码中大量的findviewbyid语句的使用,使用@injectview注入方式 3.v ...
- 学习Javascript的书籍(转)
学习Javascript的书籍 作者: 阮一峰 日期: 2008年1月 9日 昨天,ppip同学留言: 你的js主要是用什么材料学的?推荐用哪本教程呢? 我想了一下,发现自己还真的读过不少书.我在 ...
- Zbar算法流程介绍
博客转载自:https://blog.csdn.net/sunflower_boy/article/details/50783179 zbar算法是现在网上开源的条形码,二维码检测算法,算法可识别大部 ...
- PCL—点云分割(邻近信息) 低层次点云处理
博客转载自:http://www.cnblogs.com/ironstark/p/5000147.html 分割给人最直观的影响大概就是邻居和我不一样.比如某条界线这边是中华文明,界线那边是西方文,最 ...
- 高性能MySQL笔记-第5章Indexing for High Performance-003索引的作用
一. 1. 1). Indexes reduce the amount of data the server has to examine.2). Indexes help the server av ...