近日收到一封360站长安全工具发的提醒邮件,内容介绍,我的一些网站有“HTTP响应拆分漏洞”,好像挺吓人的,赶快找到这个
HTTP响应拆分漏洞PHP的解决方法。完全无小事,对于有此问题的网站,朋友们快快打上补丁吧。
其实360在提醒漏洞的同时,也提供了解决方法,在此确实需要感谢他们的努力。
什么是“HTTP响应拆分漏洞”?也叫CRLF注入攻击。CR、LF分别对应回车(%0d)、换行(%0a)字符。HTTP头由很多被CRLF组合分离的行构成,每行的结构都是“键:值”。如果用户输入的值部分注入了CRLF字符,它有可能改变的HTTP报头结构。
于是解决思路就是对程序在接收URL传递的参数时,先进行攻击代码的过滤。如传递网站的代码如ww.ni-blog.com/arctlce.php?id=1,而在arctlce.php处理id数值时先进行过滤。
以下是代码:
$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); //去掉单引号