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)第二行開始是其他資訊
狀態碼包含乙個標識狀態的數字和乙個描述狀態的單詞。例如:
200是標識狀態的是數字,ok則是描述狀態的單詞,這個狀態碼標識請求成功。
http請求和響應的例子
開啟cmd輸入telnet,輸入open www.00aq.com 80
開啟連線後輸入
返回http響應的表頭
返回的首頁內容
使用php來傳送http請求
header函式可以用來傳送http請求和響應的表頭
函式原型
string是http表頭的字串
如果replace為true,表示要用目前的表頭替換之前相似的表頭;如果replace為false,表示要使用多個相似的表頭,預設值為true
http_response_code用來強制http響應碼使用http_response_code的值
例項:
// 開啟internet socket連線$fp=
fsockopen
(www.00aq.com, 80);
// 寫入http請求表頭
); // http響應的字串
// 關閉internet socket連線
fclose($fp
); // 顯示http響應資訊
http響應拆分攻擊
http響應拆分是由於攻擊者經過精心設計利用電子郵件或者鏈結,讓目標使用者利用乙個請求產生兩個響應,前乙個響應是伺服器的響應,而後乙個則是攻擊者設計的響應。此攻擊之所以會發生,是因為web程式將使用者的資料置於http響應表頭中,這些使用者的資料是有攻擊者精心設計的。
可能遭受http請求響應拆分的函式包括以下幾個:
header(); setcookie(); session_id(); setrawcookie();
http響應拆分通常發生在:
location表頭:將使用者的資料寫入重定向的url位址內
set-cookie表頭:將使用者的資料寫入cookies內
例項:
header("location: "請求. $_get
['page'
]);
?>
host: localhost↙↙返回
訪問下面的鏈結,會直接出現乙個登陸視窗
轉換成可讀字串為:
content-type: text/html
content-type: text/html
content-length: 158
乙個http請求產生了兩個響應
防範的方法:
1)替換crlf換行字元
header("location: "2)使用最新版本的php. strtr
($_get
['page'
], array
("\r"
=>
"",
"\n"
=>
"")));
?>
php最新版中,已經不允許在http表頭內出現換行字元
隱藏http響應表頭
apache中httpd.conf,選項servertokens = prod, serversignature = off
php中php.ini,選項expose_php = off
PHP漏洞全解
server php self 變數的值為當前頁面名稱 例 get.php中上述的表單 那麼我們提交 mysql close conn 使用post,不要使用get 傳遞表單字段時,一定要是用post,不要使用get,處理變數也不要直接使用 request http響應拆分 http請求的格式 1 ...
PHP漏洞全解 五 SQL注入
sql注入攻擊 sql injection 是攻擊者在表單中提交精心構造的sql語句,改動原來的sql語句,如果web程式沒有對提交的資料經過檢查,那麼就會造成sql注入攻擊。sql注入攻擊的一般步驟 1 攻擊者訪問有sql注入漏洞的站點,尋找注入點 2 攻擊者構造注入語句,注入語句和程式中的sql...
PHP漏洞全解 五 SQL注入
本文主要介紹針對php 的sql注入攻擊。所謂的sql注入攻擊,即一部分程式設計師在編寫 的時候,沒有對使用者輸入資料的合法性進行判斷,使應用程式存在安全隱患。使用者可以提交一段資料庫查詢 根據程式返回的結果,獲得某些他想得知的資料。sql注入攻擊 sql injection 是攻擊者在表單中提交精...