保护Rails应用的SVN目录

Rails开发者喜欢用Capistrano来自动化部署网站应用(什么,你不用?),即使不使用自动化部署,很多人也会使用svn co直接将代码取到网站应用目录。这给网站信息泄漏提供了方便。使用下面的地址,就能访问到这样的网站的svn信息:

  • http://somesite.com/.svn/entries
  • http://somesite.com/.svn/javascripts/entries

这可不大妙,因为这个文件里包含了你的svn库的地址、用户名和当前目录内容等很多信息。最好通过服务器配置来禁止对.svn目录的访问。在nginx下,可以在server配置下加入这一条:

location ~ /\.svn {
	deny    all;
}

另一种方式是在config/deploy.rb中加入以下设置,使用svn export来导出代码:

set :deploy_via, :export

不过很多时候为了手工维护站点的需要,我更倾向于用svn co(svn checkout)。