Repository navigation
Expand file tree
/
Copy path.htaccess
More file actions
54 lines (47 loc) · 2.72 KB
/
Copy path.htaccess
File metadata and controls
54 lines (47 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# =====================================================================
# KÖK DİZİN KURALLARI
# cilginyazilim.com – Çoklu Seçim ve Toplu İşlem Tablosu
# ---------------------------------------------------------------------
# Bu dosya alt klasörlere de MİRAS KALIR (ölçüldü) — buradaki güvenlik
# başlıkları assets/ ve system/ yanıtlarında da geçerlidir.
# =====================================================================
# ---------------------------------------------------------------------
# 1) KLASÖR İÇERİĞİ LİSTELENMESİN
# ---------------------------------------------------------------------
# index dosyası olmayan bir klasöre girildiğinde Apache varsayılan
# olarak dosya listesini basar. Saldırganın "burada ne var?" sorusunu
# bedavaya cevaplamanın gereği yok.
Options -Indexes
# ---------------------------------------------------------------------
# 2) ÇALIŞTIRILMAYAN DOSYALAR İNDİRİLEMESİN
# ---------------------------------------------------------------------
# ÖLÇÜLEN SORUN: /cy_bulk.sql adresi HTTP 200 ile veritabanı kurulum
# dosyasının tamamını indiriyordu — tablo yapısı ve 60 kaydın tüm
# e-posta adresleri dahil. Bu depoda veri zaten örnek/uydurmadır ama
# desen tehlikelidir: aynı düzenle canlıya alınan bir projede o dosya
# gerçek müşteri verisi taşır. Şema ve örnek veri KURULUM malzemesidir;
# web sunucusunun onları servis etmesi için hiçbir sebep yoktur.
<FilesMatch "\.(sql|md|json|lock|log|ini|bak|dist|example)$">
Require all denied
</FilesMatch>
# Nokta ile başlayan dosyalar (.htaccess, .gitignore, .env …).
<FilesMatch "^\.">
Require all denied
</FilesMatch>
# ---------------------------------------------------------------------
# 3) GÜVENLİK BAŞLIKLARI
# ---------------------------------------------------------------------
<IfModule mod_headers.c>
# Tarayıcı Content-Type'ı tahmin etmeye çalışmasın. ajax.php zaten
# kendi yanıtlarına bu başlığı ekliyordu (bkz. json_response) ama
# index.php ve assets/ altındaki dosyalarda hiç yoktu.
Header always set X-Content-Type-Options "nosniff"
# Sayfa başka bir sitenin çerçevesine gömülmesin. Bu projede önemi
# somuttur: görünmez bir çerçeveye alınmış tablo üzerinde kullanıcıya
# farkında olmadan "Seçilenleri Sil" tıklatılabilir (clickjacking).
Header always set X-Frame-Options "SAMEORIGIN"
# Dış sitelere giderken tam URL yerine yalnızca alan adı gönderilsin.
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Bu sayfanın ihtiyacı olmayan tarayıcı yetenekleri kapatılsın.
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
</IfModule>