اطلب مجلّدًا لا ملفّ فهرس فيه، فكثير من الخوادم يعرض قائمة الملفّات بدلًا من ذلك. النسخ الاحتياطية والتصديرات ونسخةٌ قديمة من ملفّ إعدادات — كل ما يقبع هناك صار علنيًّا، والماسحات الآلية تبحث عن هذا بالضبط.
Nginx
autoindex off; # the default, so check nobody turned it on
grep -rn autoindex /etc/nginx/
وApache وLiteSpeed
Options -Indexes
# or per directory, in .htaccess
Options -Indexes
افحص كل مجلّد لا الجذر وحده
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
ردّ 200 على أيٍّ منها يستحقّ أن تفتحه في متصفّح الآن. أمّا 403 أو 404 فهو ما تريده.
وملفّ فهرس فارغ حلٌّ ضعيف
وضع index.html في كل مجلّد يُخفي القائمة والملفّات تبقى قابلة للوصول بالاسم. يمنع نظرةً عابرة ولا شيء غير ذلك — أطفئ الخيار عند الخادم بدلًا من ذلك.
والجواب الحقيقيّ للملفّات الخاصّة
كل ما لا ينبغي أن يكون علنيًّا لا ينبغي أن يكون تحت جذر المستندات أصلًا. أبقِه خارجه وقدّمه عبر سكربت يفحص مَن السائل.
/var/www/site/
public/ <- the document root
storage/ <- backups, exports, logs: no URL can reach these
وما دمت تنظر، ابحث عن الملفّات التي يتركها الناس خلفهم: .env و.git وconfig.php.bak وdatabase.sql. نسخةُ مصدرٍ متروكة في جذر الويب سرّبت تطبيقات كاملة — اطلب كلًّا منها وتأكّد أنها ليست هناك.