在SVN的使用中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息,如果在发布代码时,直接复制代码文件夹到Web服务器,同时.svn隐藏文件夹也被上传到程序根目录,可以利用.svn/entries文件,获取到服务器源码、svn服务器账号密码等信息。
** 从svn获取发布版本时,没有正确使用svn导出功能导致!
# nginx服务器:
location ~ ^(.*)\/\.svn\/
{
return 404;
}
# 更改完成,重启nginx
#Apache服务器:
<Directory ~ "\.svn">
Order allow,deny
Deny from all
</Directory>
# 更改完成,重启apache
依次执行下面命令,在项目目录下删除.svn文件夹
# 以web根目录/data/www/ 为例
find . -type d -name ".svn"|xargs rm -rf
rm -rf `find . -type d -name .svn`
find . -name ".svn" -type d | xargs rm -fr
find . -name ".svn" -type d | xargs -n1 rm -R
#!/bin/sh
cd /data/www
find ./ -name ".svn" | xargs -n1 echo > /dev/null 2>&1
find ./ -name ".svn" -print0 | xargs -0 rm -fr
if [ $? -ne 0 ]; then
echo "remove .svn dirs failed!"
fi
脚本执行完成,会自动删除/data/www目录及子目录所有.svn隐藏文件夹