HTTP回響拆分漏洞,也叫CRLF注入攻擊。CR、LF分別對應回車(%0d)、換行(%0a)字元。HTTP頭由很多被CRLF組合分離的行構成,每行的結構都是“鍵:值”。如果用戶輸入的值部分注入了CRLF字元,它有可能改變的HTTP報頭結構。
危害,解決方案,
危害
攻擊者可能注入自定義HTTP頭。例如,攻擊者可以注入會話cookie或HTML代碼。這可能會進行類似的XSS(跨站點腳本)或會話固定漏洞。
解決方案
方案1. 限制用戶輸入的CR和LF,或者對CR和LF字元正確編碼後再輸出,以防止注入自定義HTTP頭。
方案2. 查看:HTTP回響拆分漏洞(CRLF注入攻擊漏洞) 解決辦法 (感謝“黃克業”提供以上解決方案)
-PHP語言的解決方案:
這種現象往往表現在帶有參數傳遞的網頁,只要合理的過濾好就OK啦,PHP語言的一些過濾方法:
$post = trim($post);
$post = strip_tags($post,""); //清除HTML等代碼
$post = ereg_replace("\t","",$post); //去掉制表符號
$post = ereg_replace("\r\n","",$post); //去掉回車換行符號
$post = ereg_replace("\r","",$post); //去掉回車
$post = ereg_replace("\n","",$post); //去掉換行
$post = ereg_replace(" ","",$post); //去掉空格
$post = ereg_replace("'","",$post); //去掉單引號
方案3.如果是WordPress程式可以通過php過濾來修復,具體步驟如下:
(1)進入theme資料夾,找到當前主題中的functions.php檔案。
(2)在functions檔案中快速搜尋“$redirect”找到“$redirect = $_GET['r'];”這段代碼。
(3)將以下代碼替換步驟2中大代碼,就可以搞定,代碼如下:
$redirect = trim(str_replace("\r","",str_replace("\r\n","",strip_tags(str_replace("'","",str_replace("\n", "", str_replace(" ","",str_replace("\t","",trim($redirect))))),""))));