Rails修复可能存在的HTTP Response Splitting攻击隐患

原文址址:http://weblog.rubyonrails.com/2008/10/19/response-splitting-risk

 

  由于Rails中所用到的Ruby HTTP 函数库并没有对HTTP Headers的值进行任何的过滤,因此在某些情况下,当用户输入的值写到HTTP响头部时,攻击者就有机会构造出Response Splitting (响应拆分)和Header Injection (头部注射)等攻击。如果一些Rails程序依懒于用户所输入的数据构造HTTP响应头部,并且没有对用户输入的数据进行过滤的话的话,那么攻击者可以通过输入非法数据来设置cookies值、伪造服务端响应。

 

  对于这个隐患最常见的利用之一就是,某些程序通过客户端的请求取得一个URL地址,完成一些动作后将浏览器重定向到这个URL(比如说登陆完成后回到以前的页面)。而Rails的新版本则通过过滤redirect_to的值,以帮助开发者减少受到这类攻击的可能性。但是作为开发者,如果要将用户输入的值写到HTTP响应头部的话,仍虽要自行过滤。

 

  以下的新版本将对redirect_to进行改进:

  • 2.0.5
  • 2.1.2
  • 2.2.0

由于这些版本目前尚未发布,所以对于急需改进redirect_to函数的开发者,可以使用以下补丁

对于使用Edge Rails ba80ff74a962 之前版本的开发者,请升级到最新版本,或者使用这个补丁

 

感谢ACROS Security的Luka Treiber和Mitja Kolsek向我们提出这个问题以及Ruby Security团队给我们的建议。

你可能感兴趣的:(浏览器,Security,Ruby,Rails)