Mac OS X의 Finder는 각각의 디렉토리에 (파일 이름 앞에 점을 붙여서) 보이지 않는 ".DS_Store" 파일을 만들어서, 이 파일 속에 해당 디렉토리 안에 들어있는 파일들의 항목을 포함하는 정보를 담아놓게 됩니다. 그래서 이 .DS_Store를 간단한 글자 편집기로 불러서 읽어 보면 해당 디렉토리의 구조를 살펴볼 수가 있습니다.
여기서 문제가 되는 것은, Mac OS X "client version"에서 Apache를 돌릴 경우 만약 서버 운용자가 Finder에서 웹 디렉토리를 "한 번이라도 열어 본 적"이 있다면 생겼을 .DS_Store 파일로 인해, 악의를 품은 사용자가 웹 브라우저를 통해 http://your.mac.com/some_directory/.ds_store와 같은 주소로 해당 디렉토리에 어떤 파일들이 위치하고 있는 지를 알 수가 있게 되는 보안상의 허점이 생긴다는 것입니다.
이 문제에 대한 해결책으로는, 아래와 같이 Apache 설정 파일인 httpd.conf에 <FilesMatch> 지시자와 함께 적절한 regular expressions을 써서 해당 파일로의 접근을 막아낼 수가 있습니다.
# The Finder creates an invisible .DS_Store file in each directory.
# For 'no-index' access controls to be effective, we had better forbid
# retrieval of that file as well. Note that we have to protect
# against the same case-insensitivity bug as above.
#
<FilesMatch "^.[Dd][Ss]_[Ss]">
Order allow,deny
Deny from all
</FilesMatch>
위의 regular expression에서는 Mac OS X의 대소문자를 구별하지 못하는 문제도 같이 고려되어 있습니다. 물론, 위의 설정이 적용되기 위해서는 터미널에서 다음과 같은 명령으로 Apache를 재시동 하셔야 합니다.
참고로, Mac OS X Server 10.3.5의 경우에서는 위 문제에 대한 방지로 httpd.conf에 다음과 같이 설정이 되어 있습니다.
#### For Mac OS X Server: Note the method used to deny access to these
#### files so that files on case-insensitive HFS+ volumes are protected.
#### Also note that .DS_Store files created by the Finder are denied here.
#### (Consider adding .FBCIndex files)
#### (Note: Denying .DS_S* may interfere with Finder WebDAV operation)
#
<Files ~ "^.([Hh][Tt]|[Dd][Ss]_[Ss])">
Order allow,deny
Deny from all
Satisfy All
</Files>
여기에는 디렉토리의 Apache 설정 관련 .htaccess 파일과 .htpasswd 파일로의 접근 방지도 함께 추가되어 있음을 보실 수 있습니다.
:arrow: 여기서 제기된 Apache와 .DS_Store 파일에 관한 보안상의 문제는 Mac OS X Server 10.1 이후에서는 이미 고쳐진 것임을 밝혀둡니다.
참고 글: MacInTouch