程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> php HTTP響應拆分漏洞

php HTTP響應拆分漏洞

編輯:PHP基礎知識
 

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請求和響應的表頭

函數原型

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.1rn”);
fputs($fp, “Host: www.00aq.comrnrn”);

// HTTP響應的字符串
$http_response = “”;

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

// 關閉Internet socket連接
fclose($fp);
// 顯示HTTP響應信息
echo nl2br(htmlentities($http_response));
?>

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved