Odmowa dostępu do.foldery svn na Apache
Mamy aplikację rails w subversion, którą wdrażamy z Capistrano, ale zauważyliśmy, że możemy uzyskać dostęp do plików w'/.svn", co stanowi zagrożenie dla bezpieczeństwa.
Chciałem wiedzieć, jak najlepiej to zrobić. Kilka pomysłów:
- globalna konfiguracja Apache do odmowy dostępu
- Dodawanie .pliki htaccess w folderze publicznym i wszystkich podfolderach
- Cap zadanie, które zmienia uprawnienia
Nie podoba mi się pomysł usunięcia foldery lub używając svn export, ponieważ chciałbym zachować 'svn info' wokół.
12 answers
Najlepszą opcją jest użycie konfiguracji Apache.
Korzystanie z htaccess lub Konfiguracja globalna zależy głównie od tego, czy kontrolujesz swój serwer.
Jeśli to zrobisz, możesz użyć czegoś w rodzaju
<DirectoryMatch .*\.svn/.*> Deny From All </DirectoryMatch>
Jeśli nie, możesz zrobić coś podobnego w .pliki htaccess z FilesMatch
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-29 16:36:08
Inny sposób ochrony .pliki svn będą używać przekierowania w Apache config:
RedirectMatch 404 /\\.svn(/|$)
Więc zamiast 403 zakazanego (i podawania wskazówek do atakujących) dostajesz 404, czego byśmy się spodziewali, gdy losowo wpisujemy ścieżki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-29 18:14:50
Nie podoba mi się pomysł 404, aby każdy plik zaczynał się kropką. Użyłbym bardziej selektywnego podejścia, albo z cvs używam w projekcie (svn w przykładzie)
RedirectMatch 404 /\\.svn(/|$)
Or a catch all CVs systems
RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)
-- nieaktualna odpowiedź następuje (patrz komentarze) --
Nie mogę jeszcze pisać komentarzy... Odpowiedź csexton jest błędna, ponieważ użytkownik nie może uzyskać dostępu do .folder svn, ale może uzyskać dostęp do wszystkich plików wewnątrz niego ! np. można dostęp http://myserver.com/.svn/entries
Poprawna reguła to
RedirectMatch 404 /\\.svn(/.*|$)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-05 12:54:22
Myślę, że Riccardo Galli dobrze to zrozumiał. Nawet Apacz już miał .konfiguracja svn jako zabroniona dla mnie, ale .svn / entries był na pewno dostępny...wyświetlanie mojego serwera svn, numeru portu, nazw użytkowników itp.
Myślę, dlaczego nie ograniczyć .git jako środek zapobiegawczy (powiedzmy, że jeszcze nie używasz git, ale może kiedyś w tym czasie nie będziesz myślał o ograniczeniach katalogów).
I wtedy pomyślałem, dlaczego nie ograniczyć wszystko, co powinno być ukryte? Czy ktoś może począć masz z tym problem?
RedirectMatch 404 /\\..*(/.*|$)
Dodałem '.* "po okresie początkowym-tylko różnica w stosunku do Riccardo. Wygląda na 404 .svn,git,bla, itp.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-13 02:01:27
Wolałbym odmówić dostępu do wszystkich plików dot (np: .htaccess,svn,xxx itp.), ponieważ zwykle nie muszą być dostępne w Internecie.
Oto zasada, aby to osiągnąć (dopóki Apache 2.2 nie zostanie dołączony):
<LocationMatch "\/\..*">
Order allow,deny
Deny from all
</LocationMatch>
(UPDATE) lub możesz użyć następującej (która działa w Apache 2.2 i 2.4):
# Deny access to dot-files, as 404 error
# (not giving hint about potential existence to the file)
RedirectMatch 404 ".*\/\..*"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-11 15:28:07
To:
RedirectMatch permanent .*\.(svn|git|hg|bzr|cvs)/.* /
Może być również używany, jeśli nie chcesz wysyłać błędu z powrotem do użytkownika.
To tylko przekierowanie z powrotem na stronę rootpage. Jest to również stałe przekierowanie, więc roboty nie będą próbowały reindeksować tego adresu URL.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-08 19:55:57
RedirectMatch odpowie 404, co jest świetne.
Jeśli jednak opcja" Options +Indexes " jest włączona, użytkownicy nadal będą mogli zobaczyć '.SVN ' katalog z katalogu nadrzędnego.
Użytkownicy nie będą mogli wejść do katalogu - tutaj pojawia się "404 Not Found". Jednak będą mogli zobaczyć katalog i dostarczyć wskazówek, aby być napastników.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-23 01:21:25
Wydaje mi się, że Apache conf powinien być :
<Directory ~ "\.svn">
Order allow,deny
Deny from all
</Directory>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-22 22:30:33
Nie przepadam za RedirectMatch, więc zamiast tego użyłem RewriteRule:
RewriteRule /\..*(/.*|$) - [R=404,L]
Myślnik oznacza "nie zastępuj". Nie mogłem również zrozumieć, dlaczego w powyższych przykładach regex miał dwa ukośniki:
/\\..*(/.*|$)
Więc wyjąłem jedną i działa dobrze. Nie wiem, dlaczego użyłeś dwóch. Ktoś mnie oświeci?Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-20 17:28:48
Apache Subversion FAQ jest sugesting tego rozwiązania:
# Disallow browsing of Subversion working copy administrative dirs.
<DirectoryMatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</DirectoryMatch>
Źródło: https://subversion.apache.org/faq.html#website-auto-update
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-19 09:47:43
W .htaccess w pliku konfiguracyjnym serwera.
(1)
RewriteEngine on
RewriteRule "^(.*/)?\.git/" - [F,L]
Oraz (2)
RedirectMatch 404 /\.git
Umieść obie metody w pliku .htaccess
.
Ukrywa każdy plik lub katalog, którego nazwa zaczyna się od .git Like .katalog git lub .plik gitignore, zwracając 404.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-23 04:46:12
Utwórz plik praw dostępu w instalacji serwera subversion.
Np. jeśli struktura folderów jest
/svn
/svn / rights / svnauth.conf
Utwórz plik konfiguracyjny i wprowadź ścieżkę tego pliku w pliku konfiguracyjnym Apache subversion, który normalnie znajdziesz w /etc/httpd / conf.d / subversion.conf
W Twoim svnauth.plik conf definiuje prawa jako:
Prawa dostępu do Foo.com
[foo. com:/trunk / source]
Dev1=rw
Dev2=RW .....
W ten sposób możesz kontrolować prawa dostępu z jednego pliku i na bardzo szczegółowym poziomie.
Więcej informacji można znaleźć w Czerwonej Księdze svn.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-29 17:07:44