Ситуация, которую вы описываете, представляет собой серьезную угрозу безопасности .
Как вы, возможно, уже знаете, Subversion сохраняет свои метафайлы непосредственно в рабочей копии, используя папки .svn
. Каждая такая папка имеет записи файла со списком всех каталогов, имеющих тот же уровень, что и соответствующая папка .svn
. В папках .svn
вы также можете найти информацию о расположении хранилища, размерах файлов, датах изменения и пользовательских логинах . В случае, если вы развертываете свой сайт, просто извлекая рабочую копию в каталог htdocs
на веб-сервере, а затем, используя URL site.com/.svn/entries
, вы увидите не только файловую структуру проекта, но и список авторов, последние изменения, ссылка на хранилище и т. д.
Вы также можете найти каталог text-base
в каждой папке .svn
. Он содержит последнюю версию всех файлов, находящихся под контролем версий. Файлы в каталоге text-base
имеют расширение .svn-base
, что позволяет отправлять его содержимое прямо в вывод браузера, не интерпретируя его на стороне сервера. А именно, позволяет видеть необработанный исходный код !
Тем не менее, есть простые решения этой проблемы.
Apache:
<Directory ~ ".*\.svn">
Order allow,deny
Deny from all
Satisfy All
</Directory>
Nginx:
location ~ /.svn/ {
deny all;
}
Подводя итог, можно сказать, что основным недостатком такого подхода является то, что вы должны знать об угрозе и не забывать предотвращать возможность доступа к каталогам .svn
из Интернета.