Hazır script aldım, sitem güvende mi yoksa her an hacklenebilir miyim?
Net söyleyeyim: Dünyanın en iyi yazılımını da satın alsan, doğru güvenlik ayarlarını yapmadığın sürece siten her zaman risk altındadır. İyi haber şu ki, internetteki korsanların büyük çoğunluğu karmaşık sistemleri çökmekle uğraşmaz. Otomatik botlar kullanarak açık unutulmuş kapıları ararlar. Siteni hedef olan değil, geçilmesi zor olan tarafa geçirdiğinde saldırıların %95'inden otomatik olarak korunursun.
Bir SMM panel, Metin2 tanıtım sitesi veya e-ticaret scripti kurduğunda heyecanla hemen satış yapmaya ya da üye toplamaya odaklanırsın. Ancak arka planda açık bıraktığın tek bir dosya izni veya varsayılan bir yönetim paneli adresi, haftalarca verdiğin emeği bir gecede çöp edebilir. Siteni saldırılara karşı zırh gibi koruyacak temel adımları adım adım uygulayalım.
1. Veritabanı Güvenliği ve SQL Injection Önlemleri
Veritabanı, sitenin beynidir. Üye bilgileri, bakiye kayıtları, şifreler ve içerikler burada tutulur. Saldırganların ilk hedefi genelde SQL Injection (SQLi) yöntemidir. Bu yöntem, sitendeki form alanlarına veya URL parametrelerine zararlı SQL kodları enjekte ederek veritabanına doğrudan erişim sağlamayı hedefler.
Kullandığın scriptin kod yapısında PDO veya MySQLi prepared statements (hazırlanmış ifadeler) kullanıldığından emin olmalısın. Dışarıdan alınan her veri mutlaka filtrelenmelidir. Kullanıcıdan gelen ID değerini alırken doğrudan SQL sorgusuna eklemek yerine, veri tipini doğrulamak şarttır. Örneğin sadece sayı beklediğin bir alana metin girilmesine izin vermemelisin.
Bunun yanında, veritabanı bağlantı bilgilerini içeren dosyanın (genellikle config.php veya db.php) yetkilerini kısıtlamalısın. Ayrıca varsayılan tablo ön eklerini değiştirmek de harika bir ilk adımdır. Birçok script yüklenirken varsayılan olarak "gx_" veya "script_" gibi ön ekler kullanır. Bunları karmaşık ifadelerle değiştirmek, otomatik botların işini imkansız hale getirir.
2. Dosya İzinleri ve Upload Klasörü Koruması
Hazır scriptlerde en sık karşılaşılan ikinci büyük tehlike, dosya yükleme (upload) alanlarıdır. Kullanıcıların profil resmi, logo veya kanıt görseli yüklemesine izin veren bir sistemin varsa, korsanlar buraya resim kılıfına sokulmuş bir PHP shell dosyası yüklemeyi dener. Bu shell yüklendiğinde, saldırgan sunucunda tam yetki kazanır.
Bu felaketi önlemek için iki kritik işlem yapmalısın:
- Upload klasöründe PHP çalıştırılmasını tamamen engelle. Bunun için bu klasörün içine .htaccess dosyası koyarak `php_flag engine off` komutunu ekleyebilirsin.
- Dosya izinlerini doğru ayarla. Klasörler için 755, dosyalar için 644 izin standarttır. Config dosyaları gibi kritik verileri saklayan dosyalara ise 400 veya 440 izni vermelisin.
Hiçbir zaman bir klasöre veya dosyaya 777 izni verme. 777 demek, internetteki herkese o dosyayı değiştirme, silme ve çalıştırma hakkı tanımak demektir.
3. Yönetim Panelini Gizle ve Giriş Yollarını Zorlaştır
Herkesin bildiği yoldan yürürsen, herkesin uğradığı saldırılara maruz kalırsın. Bir script kurduğunda yönetim paneli adresi genelde /admin, /administrator veya /panel olur. Saldırganlar bu adresleri bildiği için kaba kuvvet (brute-force) saldırılarıyla şifreni denemeye başlar.
Panel klasörünün adını mutlaka benzersiz bir şeyle değiştir. Klasör adını değiştiremiyorsan, bu yola ek bir HTTP şifrelemesi (htpasswd) koyarak çift aşamalı bir doğrulama katmanı oluşturabilirsin. Yönetici hesabının kullanıcı adını asla "admin" veya "root" yapma. Şifreni ise en az 16 karakterli, harf, sayı ve özel karakter içeren karmaşık yapıda seç.
4. Cloudflare ve Web Uygulama Güvenlik Duvarı (WAF)
Siteni doğrudan sunucu IP adresin üzerinden yayına sokmak, göğsüne hedef tahtası koymak gibidir. Cloudflare gibi ücretsiz veya uygun fiyatlı bir DNS ve proxy hizmeti kullanmak, gerçek sunucu IP adresini gizler.
Cloudflare kullandığında gelen tüm trafik önce onların güvenlik süzgecinden geçer. Bot saldırıları, bilinen zararlı IP'ler ve DDoS denemeleri daha senin sunucuna ulaşmadan engellenir. Güvenlik duvarı kurallarından Türkiye dışındaki trafiğe captcha koyabilir, şüpheli istekleri anında engelleyebilirsin. Bu basit hamle bile sunucu yükünü hafifletir ve güvenliği katlayarak artırır.
5. Yazılım ve Sunucu Güncellemelerini İhmal Etme
Güvenlik durağan bir süreç değildir. Bugün tamamen güvenli olan bir kod parçası, yarın keşfedilen yeni bir açık nedeniyle zafiyet haline gelebilir. Kullandığın PHP sürümünün güncel ve desteklenen bir sürüm (örneğin PHP 8.1 veya 8.2) olduğundan emin ol. Eski PHP sürümleri bilinen onlarca güvenlik açığı barındırır.
Eğer sıfırdan güvenli altyapıya sahip bir yazılımla başlamak istiyorsan, Gamexen.com.tr üzerindeki optimize edilmiş hazır scriptleri inceleyebilir ve projeni sağlam temeller üzerine kurabilirsin.
Son olarak, ne yaparsan yap her zaman güncel bir yedeğin bulunsun. Haftalık veya günlük otomatik yedekleme mekanizması kur. Yedeklerini asla sadece aynı sunucuda tutma; kendi bilgisayarına veya farklı bir bulut depolama alanına indirmeyi alışkanlık haline getir. Temiz bir yedek, en kötü senaryoda bile seni dakikalar içinde tekrar ayağa kaldırır.