教学之友,学习之友。

站长教学网

当前位置: 站长教学网 > 网站编程 > PHP教程 >

PHP漏洞全面解析(八)-HTTP响应拆分

时间:2012-04-16 21:41来源:DoDo's 作者:ken 点击:

HTTP请求的格式

1)请求信息:例如“Get /index.php HTTP/1.1”,请求index.php文件

2)表头:例如“Host: localhost”,表示服务器地址

3)空白行

4)信息正文

“请求信息”和“表头”都必须使用换行字符(CRLF)来结尾,空白行只能包含换行符,不可以有其他空格符。

下面例子发送HTTP请求给服务器www.yhsafe.com

GET /index.php HTTP/1.1        //请求信息   

Host:www.yhsafe.com↙      //表头

↙                                                     //空格行
    ↙符号表示回车键,在空白行之后还要在按一个空格才会发送HTTP请求,HTTP请求的表头中只有Host表头是必要的饿,其余的HTTP表头则是根据HTTP请求的内容而定。
 
HTTP请求的方法
1)GET:请求响应
2)HEAD:与GET相同的响应,只要求响应表头
3)POST:发送数据给服务器处理,数据包含在HTTP信息正文中
4)PUT:上传文件
5)DELETE:删除文件
6)TRACE:追踪收到的请求
7)OPTIONS:返回服务器所支持的HTTP请求的方法
8)CONNECT:将HTTP请求的连接转换成透明的TCP/IP通道
 
HTTP响应的格式
服务器在处理完客户端所提出的HTTP请求后,会发送下列响应。
1)第一行是状态码
2)第二行开始是其他信息
状态码包含一个标识状态的数字和一个描述状态的单词。例如:
HTTP/1.1 200 OK
200是标识状态的是数字,OK则是描述状态的单词,这个状态码标识请求成功。

HTTP请求和响应的例子

打开cmd输入telnet,输入open www.00aq.com 80

打开连接后输入

GET /index.php HTTP/1.1      

Host:www.00aq.com↙     

↙                                               
返回HTTP响应的表头

返回的首页内容

使用PHP来发送HTTP请求

header函数可以用来发送HTTP请求和响应的表头 站长教学网 eduyo.com

函数原型

void header(string string [, bool replace [, int http_response_code]])

        string是HTTP表头的字符串

        如果replace为TRUE,表示要用目前的表头替换之前相似的表头;如果replace为FALSE,表示要使用多个相似的表头,默认值为TRUE

        http_response_code用来强制HTTP响应码使用http_response_code的值

实例:

<?php
// 打开Internet socket连接
$fp = fsockopen(www.00aq.com, 80);

// 写入HTTP请求表头
fputs($fp, "GET / HTTP/1.1\r\n");
fputs($fp, "Host: www.00aq.com\r\n\r\n");

// HTTP响应的字符串
$http_response = "";

while (!feof($fp))
{
        // 读取256位的HTTP响应字符串
        $http_response .= fgets($fp, );
}

// 关闭Internet socket连接
fclose($fp);
// 显示HTTP响应信息
echo nl2br(htmlentities($http_response));
?>

(责任编辑:ken)

TAG标签: php http 漏洞 攻击 响应 请求
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
注册登录:不允许匿名留言,登录后留言无需输入验证码。
栏目列表
最新内容