İçinde dizin dosyası bulunmayan bir klasörü isteyin: birçok sunucu bunun yerine dosya listesini gösterir. Yedekler, dışa aktarımlar, bir yapılandırma dosyasının eski bir kopyası — orada duran her şey artık herkese açıktır ve otomatik tarayıcılar tam da bunu arar.
Nginx
autoindex off; # the default, so check nobody turned it on
grep -rn autoindex /etc/nginx/
Apache ve LiteSpeed
Options -Indexes
# or per directory, in .htaccess
Options -Indexes
Yalnızca kökü değil, her klasörü denetleyin
for d in uploads backup files export logs tmp; do
printf '%-10s ' "$d"
curl -sS -o /dev/null -w '%{http_code}\
' "https://yourdomain.com/$d/"
done
Bunlardan herhangi birinde 200 görmek, hemen şimdi tarayıcıda açmaya değer. İstediğiniz yanıt 403 ya da 404'tür.
Boş bir dizin dosyası zayıf bir çözümdür
Her klasöre bir index.html bırakmak listeyi gizler, dosyalara adıyla yine ulaşılabilir. Bu ancak gelişigüzel bir bakışı durdurur, başka bir şeyi değil — bunun yerine seçeneği sunucuda kapatın.
Özel dosyalar için asıl yanıt
Herkese açık olmaması gereken hiçbir şey belge kökünün altında bulunmamalıdır. Onu dışarıda tutun ve kimin sorduğunu denetleyen bir betik üzerinden sunun.
/var/www/site/
public/ <- the document root
storage/ <- backups, exports, logs: no URL can reach these
Hazır bakıyorken, insanların geride bıraktığı dosyalara da bakın: .env, .git, config.php.bak, database.sql. Web kökünde unutulmuş bir kaynak yedeği, koca uygulamaları sızdırmıştır — her birini tek tek isteyip orada olmadığını doğrulayın.