Bezpiecznie mieć foldery /.svn/ na stronie na żywo? (Jak je usunąć, ale zachować możliwość aktualizacji SVN?)

10

Robię aktualizację svn, aby zaktualizować kod dla mojej strony php, ale pozostawia .svn/foldery po całym.

Myślę, że niebezpieczne jest pozostawienie tych plików do odczytu publicznego, ale bardzo łatwo jest zaktualizować system.

Czy istnieje sposób na svn updateaktualizację systemu, ale nie eksportowanie .svn/folderów?

siliconpi
źródło

Odpowiedzi:

21

Jeśli używasz apache:

<Directory ~ "\.svn">
    Order allow,deny
    Deny from all
</Directory>

To zablokuje ludziom .svnzdalny dostęp do katalogów (za pomocą przeglądarki), ale możesz zachować (i możliwości svn) w projekcie.

BTW można podstawić \.svnza \.gitlub \.cvsjeśli używasz czegoś innego niż działalność wywrotową.

rdzeń rdzeniowy
źródło
a to zablokuje wszystkie katalogi .svn w witrynie? Mam wiele podkatalogów
Siliconpi
obecnie mój httpd.conf ma <Katalog /> Opcje FollowSymLinks AllowOverride All </Directory> czy mogę dodać to, co napisałeś poniżej, jako osobną rzecz, czy też dwa wpisy muszą zostać połączone?
siliconpi
Będzie pasować do dowolnego katalogu o nazwie .svntak.
Coredump
Możesz dodać go osobno.
Coredump
3

Chcesz wyeksportować kod z SVN do działającej witryny ...

Nie używaj svn updatedo tego. aktualizacja jest przeznaczona do użytku z aktualizacją kopii roboczych, a nie eksportowaniem kodu. Użyj svn exportzamiast tego, ponieważ eksportuje czyste drzewo katalogów z określonego repozytorium.

--forceFlag pozwoli eksport nadpisać istniejące pliki.

Ręczne wprowadzanie eksportu SVN

gsreynolds
źródło
Mogę współczuć, jeśli OP nie chce używać export, ponieważ wymaga to zawsze pobrania nowej, świeżej kopii repozytorium, co jest kłopotliwe, jeśli jest to duże repozytorium przy małym połączeniu (powiedzmy, że serwer WWW to serwer hostowany, ale Twoje repozytorium SVN znajduje się w lokalnym biurze i jest udostępniane przez łącze 1Mb). updateoznacza, że ​​nie musisz za każdym razem zdobywać całości.
Mark Henderson
Sprawiedliwy punkt. Być może eksportowanie do lokalnej kopii witryny, a następnie rsynchronizacja zmian w zdalnym serwerze WWW działałoby w takiej sytuacji? Nigdy nie miałem tego problemu, więc go nie rozważałem.
gsreynolds
2

Nie umieszczam ich w witrynach produkcyjnych / na żywo. Bo nie chcę, aby ja i / lub inni programiści zapomnieli, jaki zły pomysł jest edytowanie kodu na żywo. Mój skrypt instalacyjny odfiltrowuje moje pliki .svn.

ekerner
źródło
@kerner - jak je wtedy zaktualizować?
siliconpi
1
Dlaczego po prostu ich nie używać svn exporti nie zawracać sobie głowy ich filtrowaniem?
pjmorse
Mam skrypt instalacyjny, którego używam na swoich stronach, i lekko go dostosowuję, aby pasował do każdego. Zwykle robi też takie rzeczy, jak budowanie baz danych, tabel db i użytkowników db, konfigurowanie domyślnych użytkowników lub administratorów itp. Aby wykonać eksport do prod, użytkownik prod (jako człowiek lub skrypt) sprawdza działający svn skopiuj gdzieś wzdłuż ~ /, a następnie uruchamia skrypt instalacyjny, który jest członkiem wspomnianej kopii roboczej, a następnie opcjonalnie usuwa kopię roboczą.
ekerner
1

Powinieneś zajrzeć do odpowiedniego systemu wdrażania, takiego jak Capistrano . Oznacza to, że Twoje serwery produkcyjne nie wymagają subwersji, a Ty możesz wdrożyć na wielu serwerach i dodać niestandardową logikę do wdrożeń. Ułatwia to również wycofywanie wdrożeń.

dhasenan
źródło