Publicznie dostępny plik .DS_Store

Co to jest

Na stronie jest publicznie dostępny plik .DS_Store. Tworzy go Finder w macOS i zapisuje w nim listę elementów folderu. Na serwer trafia przez pomyłkę, gdy folder zostanie wgrany przez FTP, rsync albo spakowany do archiwum. Sprawdzamy, że odpowiedź ma strukturę prawdziwego .DS_Store, a nie tylko HTTP 200.

Dlaczego to problem

Sam plik niczego nie kradnie. Ujawnia jednak nazwy plików i folderów, do których nigdzie nie ma linków i których nikt nie powinien widzieć:

To ustalenie o niskiej wadze. Pokazuje jednak, że na serwer trafia też to, co tam nie powinno.

Jak to naprawić

Usuń pliki na serwerze

find /var/www -name .DS_Store -delete

Nie dopuść do powrotu

Dodaj go do .gitignore i wyłączaj przy wgrywaniu:

.DS_Store
rsync -av --exclude=.DS_Store ./ server:/var/www/site/

Zablokuj pliki zaczynające się od kropki

nginx (przepuszcza tylko .well-known):

location ~ /\.(?!well-known) {
    deny all;
}

Apache:

<FilesMatch "^\.DS_Store$">
    Require all denied
</FilesMatch>

Sprawdź też, co plik wymieniał. Jeśli jest tam kopia zapasowa lub eksport, upewnij się, że nie jest publiczny.

Źródła