문제

우리는 레일 응용 프로그램에서 파괴하는 우리와 함께 배포할지만 카피스트라노타하고 있는 우리에 액세스할 수 있는 파일을'/.svn'제공하는 보안 관심사입니다.

내가 무엇인지 알고 싶어하는 최고의 방법입니다.몇 가지 아이디어:

  • 글로벌 아파치 설정을 거부하 액세스
  • 추가됩니다.htaccess 파일에 공공의 폴더와 모든 하위 폴더
  • 모자 작업을 변경하는 권한이

나는 진짜로 좋아하지 않는다는 아이디어의 폴더를 삭제하거나 사용하 svn 내보내기 때문에,나는 유지하고 싶은'svn 정보'니다.

도움이 되었습니까?

해결책

최고의 옵션을 사용하여 아파치를 구성합니다.

사용 htaccess 또는 글로벌 구성에 주로 의존을 제어하는 경우 서버입니다.

당신이 경우에,같은 것을 사용할 수 있습니다

<DirectoryMatch .*\.svn/.*>
    Deny From All
</DirectoryMatch>

지 않는 경우에,당신이 무언가를 할 수 있는 유사한다.htaccess 파일을 FilesMatch

다른 팁

.SVN 파일을 보호하는 또 다른 방법은 Apache 구성에서 리디렉션을 사용하는 것입니다.

RedirectMatch 404 /\\.svn(/|$)

따라서 403 금지를받는 대신 (그리고 공격자가 될 단서를 제공하는 것) 404를 얻습니다. 이것은 우리가 무작위로 경로를 입력 할 때 기대할 수있는 것입니다.

나는 각 파일의 startig를 위트 한 404에 대한 아이디어를 좋아하지 않는다. 프로젝트에서 사용하는 CV와 함께보다 선택적인 접근 방식을 사용합니다 (예제의 SVN).

RedirectMatch 404 /\\.svn(/|$)

또는 모든 CVS 시스템을 잡습니다

RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)

-오래된 답변이 따릅니다 (의견 참조)-

아직 댓글을 쓸 수 없습니다 ... 사용자가 .SVN 폴더에 액세스 할 수 없지만 그 안에있는 파일에 액세스 할 수 있기 때문에 CSEXTON의 답변은 잘못되었습니다! 예를 들어 액세스 할 수 있습니다http://myserver.com/.svn/entries

올바른 규칙은입니다

RedirectMatch 404 /\\.svn(/.*|$)

Riccardo Galli가 제대로 얻었습니다. Apache조차도 이미 .SVN 설정이 금지되어 있었지만 .SVN/Entries는 확실히 사용할 수있었습니다. SVN 서버, 포트 번호, 사용자 이름 등을 노출 시켰습니다.

실제로, 예방 조치로 제한하지 않는 이유는 무엇입니까 (아직 git을 사용하지 않지만 언젠가 디렉토리 제한에 대해 생각하지 않을 수도 있습니다).

그리고 어쨌든 숨겨져야 할 모든 것을 제한하지 않는 이유는 무엇입니까? 누구든지 문제를 생각할 수 있습니까?

RedirectMatch 404 /\\..*(/.*|$)

초기 기간 후에 '.*'를 추가했습니다. Riccardo와의 차이 만 추가했습니다. 404.svn, .git, .blah 등으로 보인다.

나는 일반적으로 웹에 접근 할 필요가 없기 때문에 모든 점 파일 (예 : .htaccess, .svn, .xxx 등)에 대한 접근을 거부합니다.

다음은이를 달성하기위한 규칙입니다 (Apache 2.2가 포함될 때까지).

<LocationMatch "\/\..*">
    Order allow,deny
    Deny from all
</LocationMatch>

(업데이트) 또는 다음을 사용할 수 있습니다 (Apache 2.2 및 2.4에서 작동) :

# Deny access to dot-files, as 404 error
# (not giving hint about potential existence to the file)
RedirectMatch 404 ".*\/\..*"

이것:

RedirectMatch permanent .*\.(svn|git|hg|bzr|cvs)/.* /

사용자에게 오류를 다시 보내지 않으려면 사용할 수 있습니다.

사이트 루트 페이지로 다시 리디렉션됩니다. 또한 이것은 영구적 인 리디렉션이므로 로봇은이 URL을 다시 구매하려고하지 않습니다.

리디렉션 매치는 404로 응답합니다.

그러나 "옵션 +색인"이 활성화되면 사용자는 여전히 부모 디렉토리에서 '.svn'디렉토리를 볼 수 있습니다.

사용자는 디렉토리에 입력 할 수 없습니다. 이곳은 '404를 찾지 못한'이 나오는 곳입니다. 그러나 디렉토리를보고 공격자가 될 단서를 제공 할 수 있습니다.

나는 나에게 보인다, Apache conf는 다음과 같아야한다.

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

나는 그 전부 리디렉션 매치를 좋아하는 것이 아니므로 대신 재 작문을 사용했습니다.

RewriteRule /\..*(/.*|$) - [R=404,L]

하이픈은 "대체를하지 마십시오"를 의미합니다. 또한 위의 예에서 regex에 두 개의 백 슬래시가있는 이유를 알 수 없었습니다.

/\\..*(/.*|$)

그래서 나는 하나를 꺼내서 잘 작동합니다. 왜 거기에서 두 가지를 사용할 것인지 알 수 없습니다. 누군가 나를 깨달으려는 사람?

Apache Subversion FAQ는이 솔루션을 강조하고 있습니다.

# Disallow browsing of Subversion working copy administrative dirs.
<DirectoryMatch "^/.*/\.svn/">
    Order deny,allow
    Deny from all
</DirectoryMatch>

원천: https://subversion.apache.org/faq.html#website-auto-update

MOD_ALIAS의 다른 지시문과 마찬가지로 REDIRECTMATCH CASE Insensentivity 파일 시스템에서도 사례에 민감합니다 (참조 mod_alias 문서). 따라서 모든 버전 제어 시스템의 파일 일치 및 차단에 대한 위의 답변은 올바르게 아닙니다.

대신에

RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)

또는

RedirectMatch permanent .*\.(svn|git|hg|bzr|cvs)/.* /

이와 같은 것이 필요합니다

RedirectMatch 404 "(?i)/\.?(cvs|svn|git|hg|bzr)"

실제로 모든 것을 차단하려면

  • CVS 디렉토리는 대문자입니다. 그리고
  • 앞쪽의 점 (.)으로 시작하지 마십시오.

도움이되기를 바랍니다.

서버 구성 파일의 .htaccess에서

(1)

RewriteEngine on
RewriteRule "^(.*/)?\.git/" - [F,L]

그리고 (2)

RedirectMatch 404 /\.git

이 두 방법을 모두 배치하십시오 .htaccess 파일.

404를 반환하여 이름이 .git .git directory 또는 .gitignore 파일로 시작하는 파일 또는 디렉토리를 숨 깁니다.

Subversion Server 설치에서 액세스 권한 파일을 만듭니다.

예를 들어 폴더 구조가있는 경우

/svn

/svn/rights/svnauth.conf

구성 파일을 작성하고 일반적으로 찾을 수있는 Apache Subversion 구성 파일에 해당 파일의 경로를 입력하십시오. /etc/httpd/conf.d/subversion.conf

svnauth.conf 파일에서 권리를 다음과 같이 정의합니다.

foo.com에 대한 액세스 권한

foo.com:/trunk/source

dev1 = rw

dev2 = rw .....

이렇게하면 하나의 단일 파일에서 그리고 세분화 된 수준에서 액세스 권한을 제어 할 수 있습니다.

자세한 정보는 SVN Red Book을 통해 살펴보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top