PHP伪造来源HTTP_REFERER的方法实例详解


Posted in PHP onJuly 06, 2015

本文实例讲述了PHP伪造来源HTTP_REFERER的方法。分享给大家供大家参考。具体分析如下:

如今网络上十分流行论坛自动发帖机,自动顶贴机等,给众多论坛网站带来了大量的垃圾信息,许多网站只是简单地采用了判断HTTP_REFERER的值来进行过滤机器发帖,可是网页的HTTP_REFERER来路信息是可以被伪造的。任何事物都是双面刃,只要你善于利用就有其存在价值。

很早以前,下载软件如Flashget,迅雷等都可以伪造来路信息了,而这些软件的伪造HTTP_REFERER大多是基于底层的sock来构造虚假的http头信息来达到目的。本文就纯粹从技术角度讨论一下,php语言下的伪造HTTP_REFERER的方法,以期让大家了解过程,更好的防御。

环境:Apache/2.2.8 + PHP/5.2.5 + Windows XP系统,本地测试。
首先,在网站虚拟根目录下建立1.php和2.php两个文件。
其中,1.php文件内容如下:

<?php
$host = '127.0.0.1';
$target = '/2.php';
$referer = 'https://3water.com'; //伪造HTTP_REFERER地址
$fp = fsockopen($host, 80, $errno, $errstr, 30);
if (!$fp){
echo "$errstr($errno)<br />\n";
} 
else{
$out = "
GET $target HTTP/1.1
Host: $host
Referer: $referer
Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)){
echo fgets($fp, 1024);
}
fclose($fp);
}
?>

另一个2.php文件很简单,只是写上一行读取当前的HTTP_REFERER服务器值的代码即可,如下:

<?php
echo "<hr />";
echo $_SERVER["HTTP_REFERER"];
?>

执行1.php文件,打开http://localhost/1.php,页面返回信息如下:

HTTP/1.1 200 OK Date: Fri, 04 Apr 2008 16:07:54 GMT Server: Apache/2.2.8 (Win32) PHP/5.2.5 X-Powered-By: PHP/5.2.5 Content-Length: 27 Connection: close Content-Type: text/html; charset=gb2312

看到了结果了吧,伪造来源HTTP_REFERER信息成功。所以,如果你的网站仅仅是判断HTTP_REFERER,并不是安全的,别人一样可以构造这样的来源,简单的防御方法就是验证页里加上验证码;还可以结合IP判断的方法。

补充:ASP下的伪造来源的代码如下:

<%
dim http 
set http=server.createobject("MSXML2.XMLHTTP") '//MSXML2.serverXMLHTTP也可以
Http.open "GET",url,false 
Http.setRequestHeader "Referer","https://3water.com/" 
Http.send()
%>

如果你是一个有心人,请不要恶意利用这些方法,毕竟坏事做多了的话,效果就过犹不及了;比如你发大量的垃圾帖子吧,可能短期内会给你带来大量的外部链接,但这样的黑帽手段迟早要被搜索引擎发现,而这些已经发出去的链接就好像泼出去的水一样收不回来,这样的罪证就不是你能控制的了。

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
一个简易需要注册的留言版程序
Oct 09 PHP
利用discuz实现PHP大文件上传应用实例代码
Nov 14 PHP
php 取得瑞年与平年的天数的代码
Aug 10 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
PHP中将ip地址转成十进制数的两种实用方法
Aug 15 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
Jul 08 PHP
PHP程序员必须清楚的问题汇总
Dec 18 PHP
smarty自定义函数htmlcheckboxes用法实例
Jan 22 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
Apr 02 PHP
Centos PHP 扩展Xchche的安装教程
Jul 09 PHP
php生成图片缩略图功能示例
Feb 22 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 PHP
PHP 错误处理机制
Jul 06 #PHP
帝国cms常用标签汇总
Jul 06 #PHP
帝国CMS留言板回复后发送EMAIL通知客户
Jul 06 #PHP
帝国cms目录结构分享
Jul 06 #PHP
33道php常见面试题及答案
Jul 06 #PHP
PHP中创建和验证哈希的简单方法实探
Jul 06 #PHP
详解PHP中的PDO类
Jul 06 #PHP
You might like
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
php URL验证正则表达式
2011/07/19 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
js正则表达式匹配数字字母下划线等
2015/04/14 Javascript
举例详解Python中smtplib模块处理电子邮件的使用
2015/06/24 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
vue父组件向子组件动态传值的两种方法
2017/11/11 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
Python字符转换
2008/09/06 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
Atom的python插件和常用插件说明
2018/07/08 Python
python爬取哈尔滨天气信息
2018/07/14 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
附答案的Java面试题
2012/11/19 面试题
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
开票员岗位职责
2015/02/12 职场文书
唐山大地震观后感
2015/06/05 职场文书
绿里奇迹观后感
2015/06/15 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技
vue3不同环境下实现配置代理
2022/05/25 Vue.js