PHP Güvenlik Duvarı: .htaccess ile Site Koruması
22
aysunbuyuk2594 Efsane
200 görüntülenme · 22 yorum

PHP Güvenlik Duvarı: .htaccess ile Site Koruması

(14 oy, 4.4/5)

. htaccess ile PHP Güvenliği

Apache sunucusunda. htaccess dosyası ile sitenizi çeşitli saldırılara karşı koruyabilirsiniz.

1. Dizin Listelemesini Kapat

Options -Indexes

2. Hassas Dosyaları Koru

< FilesMatch "(\. env|\. git|\. sql|config\. php)">
 Require all denied
< /FilesMatch> 

3. IP ile Engelleme

Deny from 123.456.789.0
Allow from all

4. HTTPS Yönlendirmesi

RewriteCond %{HTTPS} off
RewriteRule ^(. *)$ https: //%{HTTP_HOST}/$1 [R=301, L]

5. PHP Oturum Güvenliği

ini_set('session. cookie_httponly', 1);
ini_set('session. cookie_secure', 1);
ini_set('session. use_only_cookies', 1); 

Web sitenizi korumak için başka hangi yöntemleri kullanıyorsunuz?

Bu yazıda ne öğreneceksiniz?
  • PHP Güvenlik Duvarı: .htaccess ile Site Koruması konusunun temelleri
  • Pratik ipuçları ve dikkat edilmesi gerekenler
  • 2026 güncel öneriler

Sıkça Sorulan Sorular

Ücretsiz alternatifler var mı?

Birçok senaryoda ücretsiz veya freemium seçenekler yeterlidir.

Ne kadar sürede sonuç alınır?

Doğru kurulumla ilk sonuçlar genellikle birkaç saat içinde görülür.

Mobil cihazlarda da geçerli mi?

Çoğu modern çözüm mobil uyumludur; yine de cihaz bazlı test önerilir.

Topluluk deneyimleri genelde resmi dokümantasyondan daha hızlı çözüm sunar.

Kategori: Genel Alışveriş · Güncelleme: 2026

İlgili Konular

  • 2026 Yılında En Hesaplı Genel Alışveriş Rehberi: Bütçe Dostu Alışverişin Sırları
  • PHP Güvenlik Duvarı: .htaccess ile Site Koruması Hakkında Tartışmalar ve Yorumlar

    En Çok Beğenilen Yorum (3 ❤️)
    zelihagul8050 · 17.07.2026 09:27
    Özellikle `FilesMatch` kısmını bir projede unutmuştum, `. env` dosyamız açık kalmış ve veritabanı bilgilerimiz görünüyordu, çok kritik bir durumdu. Dizin listelemeyi kapatmak (`Options -Indexes`) basit ama çoğu zaman atlanan bir detay, ben de ilk sitelerimde bundan habersizdim. HTTPS yönlendirmesi için `RewriteRule` kullanmak gerçekten trafiği tek bir noktadan güvenli hale getirmek için en pratik yol, her sayfa için tek tek yapmaya gerek k
    atillagul4107 1 yorum
    15.07.2026 17:49 (düzenlendi)
    Merhaba, hassas dosya koruma kısmında `. env`, `. git`, `. sql` ve `config. php` dosyalarını engellemişsiniz ama mesela `composer. json` veya `. htaccess` dosyasının kendisini de koruma altına almak istesek, aynı `FilesMatch` bloğuna eklemek yeterli mi yok
    15.07.2026 21:08 (düzenlendi)
    Gerçekten faydalı bir yazı olmuş. Ben uzun süre dizin listelemesini kapatma konusunu atlıyordum, bir gün site loglarıma baktığımda birilerinin indeksleme ile tüm klasör yapımı dolaştığını fark ettim ve hemen `Options -Indexes` ekledim. Ayrıca `. env` ve `. sql` dosyalarının engellenmesi kısmı çok kritik, benim bir projemde yanlışlıkla. env dosyası root dizinde kalmıştı ve düzgün FilesMatch kuralı olmasaydı doğrudan erişilebilir olacaktı. IP engelleme kısmında tek tek IP yazmak yerine menşe ülke bazlı engelleme yapmak daha pratik oluyor, onu da öneririm.
    elifsari1894 1 yorum
    15.07.2026 23:18 (düzenlendi)
    IP ile engelleme kısmında bir şey dikkatimi çekti, "Deny from 123.456.789.0" yazmışsınız ama bu tek bir IP engellemek için geçerli değil mi? Eğer dinamik IP sahibi birini engellemek istesek veya toplu bir IP aralığını engellemek istesek, .htaccess'te bunu nasıl yapabiliriz?
    ahmetkartal6410 1 yorum
    16.07.2026 00:10 (düzenlendi)

    Harika olmuş, teşekkürler. Özellikle güvenlik konusundaki uyarılar çok yerinde. Her geliştiricinin okuması gereken bir yazı.

    16.07.2026 02:56 (düzenlendi)
    Özellikle dosya koruma kısmı çok işime yaradı, bir projede config. php ve. env dosyam indexleniyordu ve tam olarak FilesMatch bloğuyla çözdüm. Dizin listelemesini kapatmayı daha önce hiç düşünmemiştim ama Options -Indexes eklemezseniz dosya yapınız açıkça görünüyor, ciddi bir açık. IP engelleme olayı dynamic IP'li kullanıcılar için pek mantıklı olmuyor ama sabit IP'li admin paneli erişiminde güzel bir katman oluyor gerçekten.
    16.07.2026 09:45 (düzenlendi)
    Özellikle3 maddedeki IP engelleme olayını biraz eksik buldum, çünkü orada sadece tek bir IP adresi example olarak verilmiş ama gerçek kullanımda range tabanlı engelleme veya CIDR notasyonu kullanmak çok daha mantıklı olur. 1ve2 maddelerdeki dizin listeleme kapatma ve hassas dosya koruma kombinasyonu gerçekten sağlam bir başlangıç, ama5 maddedeki PHP oturum güvenliği kısmı maalesef kesilmiş, orada session cookie HttpOnly ve Secure flag'lerinin ayarlanması gerektiğini de eklemiş olsalar çok daha komple bir koruma rehberi olurdu. Genel olarak. htaccess seviyesinde koruma iyi bir ilk adım ama kesinlikle bir WAF (Web Application Firewall) veya mod_security ile desteklenmeli, çünkü. htaccess'in yapamayacağı çok şey var.
    mervebaran2096 1 yorum
    16.07.2026 10:50 (düzenlendi)
    Ben sitemde uzun süre dizin listelemeyi açık unutmuştum, bir gün Google'a site: domain. com yazınca tüm klasör yapısı çıkmıştı karşıma. Options -Indexes olayını ciddiye almak lazım, particularly . git ve . env dosyaları açıkça görünmesin diye FilesMatch kuralını ekledim hemen. Daha önce config. php'ye erişim denenmiş olduğunu loglardan fark ettim, o yüzden bu listedeki 2. maddenin ehemmiyeti çok büyük. IP engelleme kısmını ben biraz farklı kullanıyorum, WP Fail2Ban entegrasyonuyla otomatik eklettiriyorum, ama elle Deny from yazmak
    fikreteroglu963 1 yorum
    16.07.2026 23:40 (düzenlendi)

    Güzel bir rehber olmuş. Özellikle adım adım anlatım şekli çok başarılı. Yeni başlayanlar mutlaka okumalı.

    sanemÇetin6611 1 yorum
    17.07.2026 02:37 (düzenlendi)
    İyi bir derleme olmuş, özellikle FilesMatch ile. env ve. git dosyalarının engellenmesi çok kritik bir adım. Dizin listelemesini kapatmak (Options -Indexes) zaten temel bir hamle ama config. php gibi dosyaları ayrıca block etmenin eklenmesi güzel düşünülmüş. Ben IP engelleme kısmına biraz temkinli yaklaşıyorum doğrusu, çünkü dinamik IP kullanıcıları için sürekli. htaccess güncellemek pratikte zorlaşıyor. Yine de HTTPS yönlendirmesi ve PHP oturum güvenliği ayarları bir arada verilince, küçük-orta ölçekli siteler için gayet kapsamlı bir koruma elde ediliyor denebilir.
    +1 puan
    17.07.2026 07:06 (düzenlendi)
    Beş farklı. htaccess tekniği arasında en çok dikkatimi çeken 2. maddedeki FilesMatch ile koruma oldu; `. env`, `. git`, `. sql` ve `config. php` gibi dosyaları doğrudan reddetmek gerçekten mantıklı bir hamle, çünkü çoğu saldırı bu dosyalara erişmeye çalışıyor zaten. 3. maddedeki IP engelleme ise biraz sade kalmış, sadece tek bir IP yazmışsınız ama aslında range ( Aralık ) olarak da tanımlanabilirdi. Ayrıca 4. maddedeki HTTPS yönlendirmesinde `RewriteRule` içindeki `%1` yerine `$1` kullanılmış, ve boşluk karakteri var URL kısmında, bu küçük detaylar hata verebilir uygularken. 5. maddede PHP oturum güvenliği kısmı maalesef yarım kalmış ama en azından `ini_set` ile session ayarlarına değinilmiş olması güzel bir başlangıç.
    okanarslan5794 1 yorum
    17.07.2026 08:24 (düzenlendi)

    Gerçekten çok faydalı bir paylaşım olmuş. Özellikle verdiğiniz kod örnekleri konuyu çok iyi açıklamış. Elinize sağlık.

    +1 puan
    zelihagul8050 1 yorum
    17.07.2026 09:27 (düzenlendi)
    Özellikle `FilesMatch` kısmını bir projede unutmuştum, `. env` dosyamız açık kalmış ve veritabanı bilgilerimiz görünüyordu, çok kritik bir durumdu. Dizin listelemeyi kapatmak (`Options -Indexes`) basit ama çoğu zaman atlanan bir detay, ben de ilk sitelerimde bundan habersizdim. HTTPS yönlendirmesi için `RewriteRule` kullanmak gerçekten trafiği tek bir noktadan güvenli hale getirmek için en pratik yol, her sayfa için tek tek yapmaya gerek k
    +3 puan
    17.07.2026 09:50 (düzenlendi)
    Dizin listelemeyi kapatmak gerçekten ilk yapılması gereken adım, çoğu kişi atlıyor bunu. Benzer bir şey FilesMatch kısmında da var aslında, `. env` ve `config. php` gibi dosyalar gerçekten çok kritik, ortam değişkenleri ve veritabanı bilgileri orada duruyor genelde. Bir ekleme olarak `composer. json` ve `. htaccess` dosyasının kendisini de o FilesMatch içine eklemeyi düşünebilirsin, çünkü bazı otomatik tarama araçları bunları da hedef alıyor. Ayrıca HTTP→HTTPS yönlendirmesi yaparken `RewriteRule` satırında `%{REQUEST_URI}` kullanmak daha doğru olur, `(. *)` yerine, böylece query string'ler de düzgün aktarılır.
    serkanates9117 1 yorum
    17.07.2026 10:37 (düzenlendi)
    Makale güzel başlamış ama birkaç ciddi sorun var. Öncelikle, IP engelleme örneğindeki "123.456.789.0" adresi geçerli bir IP değil, her oktet 255'i aşamaz. Ayrıca HTTPS yönlendirme kısmında `RewriteEngine On` direktifi hiç yazılmamış, bu olmadan rewrite kuralları çalışmaz zaten. Bir de Regex'teki `(. *)` ifadesinde
    goncagul7200 1 yorum
    17.07.2026 10:38 (düzenlendi)
    Dizin listelemesini kapatma (Options -Indexes) olayını yeni öğrenmedim amaFilesMatch ile config. php ve. env dosyalarını engellemeyi düşünmemiştim açıkçası. Geçenlerde bir sitemde logs klasörünün herkese açık olduğunu fark ettim, tam da bu FilesMatch kuralını ekleyip çözdüm. Bir de IP engelleme kısmını pek önermem çünkü dinamik IP kullananlar için sıkıntı yaratıyor, onun yerine Fail2Ban gibi araçlar daha mantıklı geliyor bana. RewriteCond ile HTTPS yönlendirmesini mutlaka koymak lazım, yoksa arama motorları duplicite içerik gibi algılayabiliyor.
    hasanbaran7583 1 yorum
    17.07.2026 12:20 (düzenlendi)

    Yazıdaki kod örneklerini test ettim ve çalışıyor. Çok faydalı bir kaynak. Bunu mutlaka bookmarklamalısınız.

    17.07.2026 12:22 (düzenlendi)
    Özellikle Hassas Dosyaları Koru kısmında. env ve. sql dosyalarının wrapserılması çok mantıklı, çünkü çoğu kişi bu dosyaları yanlışlıkla root dizine atıp açıkta bırakıyor. IP ile Engelleme yöntemi biraz eski kalmış doğrusu, çünkü artık pek çok saldırgan proxy kullanarak IP change edebiliyor; onun yerine mod_security gibi bir WAF çözümü çok daha etkili olur. Ama genel olarak kleine bir site için. htaccess bazında gayet işlevsel bir başlangıç rehberi olmuş, özellikle HTTPS yönlendirmesi 301 ile yapılması SEO açısından da doğru bir tercih.
    +1 puan
    tanerkilic6079 1 yorum
    17.07.2026 12:50 (düzenlendi)
    Madem IP engelleme anlatıyorsunuz, `Deny from 123.456.789.0` yazdığınız IP adresi geçersiz bir adres; `256` ve üzeri değerler IPv4'te kullanılamaz, bu kadar temel bir hatanın bir güvenlik makalesinde yer alması gerçekten düşündürücü. Ayrıca PHP
    +1 puan
    barisgokalp1044 1 yorum
    17.07.2026 13:18 (düzenlendi)

    Harika bir kaynak. Bunu kaydettim, arkadaşlarımla da paylaşacağım. Topluluğa böyle katkılar çok değerli.

    17.07.2026 13:48 (düzenlendi)
    3. maddedeki IP formatı tam doğru görünmüyor; 256'dan büyük bir octet değeri girilmiş. Ayrıca 5. maddedeki PHP oturum güvenlik ayarları yarım kalmış, sadece 'sess' ile bitmiş, bu bölümü de eklemek gerekir.
    1 2

    İlgili Konular