WordPress sitenizi SQL enjeksiyon saldırılarına karşı güvence altına almak, verilerinizi korumak ve ziyaretçilerinizin güvenini sürdürmek için gereklidir.
SQL enjeksiyonu, bilgisayar korsanları tarafından veritabanınıza saldırmak için kullanılan yaygın bir tekniktir. Bunu yaptıklarında, bilgisayar korsanları hassas verilerinizi okuyabilir, değiştirebilir ve tüm veritabanınızın kontrolünü ele geçirebilir.
Web sitenizi bu tehditten korumak için web sitenizde güçlü güvenlik önlemleri uygulamanız çok önemlidir.
WPBeginner’da güvenliği çok ciddiye alıyoruz ve sitemizi bilgisayar korsanlarından ve kötü amaçlı yazılımlardan korumak için yukarıda ve öteye gittik. SQL enjeksiyon saldırılarına karşı önerdiğimiz güvenlik uygulamalarının çoğu bizim de başarıyla kullandığımız yöntemlerdir.
Bu makalede, WordPress’te SQL enjeksiyon saldırılarını önlemek için adım adım uygulanabilir bazı ipuçları paylaşacağız.
WordPress SQL Enjeksiyon Saldırılarını Neden Önleyelim?
SQL, WordPress sitenizin veritabanı ile iletişim kuran bir programlama dili olan Yapılandırılmış Sorgu Dili anlamına gelir. Bu özellik olmadan siteniz herhangi bir dinamik içerik oluşturamaz.
Ancak yetkisiz kullanıcı girişi, güncel olmayan yazılımlar veya hassas bilgilerin ifşa edilmesi güvenlik açığına neden olabilir ve bilgisayar korsanlarının SQL enjeksiyon saldırıları gerçekleştirmesini kolaylaştırabilir.
Bu saldırı veritabanı sunucunuzu hedef alır ve SQL’inize kötü amaçlı kod veya ifadeler ekler. Bunu yaptıktan sonra, bilgisayar korsanları veritabanınızda depolanan kullanıcı verileri gibi hassas bilgileri kimlik hırsızlığı, hesap ele geçirme, finansal dolandırıcılık ve daha fazlası için kullanabilir.
Ayrıca veritabanı girişlerini veya hesap izinlerini değiştirebilir ve DDoS saldırıları gerçekleştirerek gerçek kullanıcıların web sitenizi ziyaret etmesini zorlaştırabilirler.
Bu, müşteri güvenine zarar verebilir, kullanıcı deneyimini olumsuz etkileyebilir ve web sitesi trafiğini azaltabilir, bu da küçük işletmenizin büyümesi için kötü olacaktır.
Bunu söyledikten sonra, WordPress’te SQL enjeksiyon saldırılarını önleyebilecek bazı uygulanabilir ipuçlarına bir göz atalım. İşte bu makalede bahsedeceğimiz konulara hızlı bir genel bakış:
- Perform Site Updates Regularly And Use a Firewall
- Hide Your WordPress Version
- Change the WordPress Database Prefix
- Validate User Data
- Limit User Role Access and Permissions
- Create Custom Database Error Messages
- Remove Unnecessary Database Functionality
- Bonus: Use WPBeginner Pro Services to Create a Secure Site
Not: Önleyici tedbirler için veritabanınızda herhangi bir değişiklik yapmadan önce, bunun için bir yedek oluşturmanızı öneririz. Bu şekilde, herhangi bir şey yanlış giderse, düzeltmek için yedeği kullanabilirsiniz. Ayrıntılar için WordPress veritabanı yedeğinin manuel olarak nasıl alınacağına ilişkin eğitimimize bakın.
1. Site Güncellemelerini Düzenli Olarak Yapın ve Güvenlik Duvarı Kullanın
SQL enjeksiyon saldırılarını önlemenin etkili bir yolu WordPress sitenizi düzenli olarak en son sürüme güncellemektir. Bu güncellemeler genellikle veritabanı yazılımı sorunları da dahil olmak üzere güvenlik açıklarını gidererek bilgisayar korsanlarının sitenize saldırmasını zorlaştırır.
WordPress’in eski bir sürümünü kullanıyorsanız, Gösterge Tablosu ” Güncellemeler sayfasını ziyaret ederek en son sürüm için otomatik güncellemeleri etkinleştirmenizi öneririz.
Burada, ‘WordPress’in tüm yeni sürümleri için otomatik güncellemeleri etkinleştir’ bağlantısını tıklamanız yeterlidir. Artık tüm önemli güncellemeler yayınlandıktan sonra sitenize yüklenecektir.
Daha fazla bilgi için WordPress’in nasıl güvenli bir şekilde güncelleneceğine ilişkin yeni başlayanlar için hazırladığımız rehbere göz atabilirsiniz.
Bunu yaptıktan sonra, ek güvenlik için bir güvenlik duvarı da ekleyebilirsiniz. Bu özellik, siteniz ile gelen trafik arasında bir kalkan görevi görür ve SQL saldırıları da dahil olmak üzere yaygın güvenlik tehditlerini web sitenize ulaşmadan engeller.
Küçük bir çevrimiçi işletme işletiyorsanız, piyasadaki en iyi WordPress güvenlik duvarı yazılımı seçeneklerinden biri olan Sucuri‘yi öneriyoruz. Uygulama düzeyinde güvenlik duvarı, kaba kuvvet önleme, kötü amaçlı yazılım ve kara liste kaldırma hizmetleri sunması onu mükemmel bir seçim haline getiriyor.
Bu araçla ilgili ilk elden deneyimlerimiz var. Hatta geçmişte web sitemize yapılan 450.000 WordPress saldırısını engellememize yardımcı oldu.
Bununla birlikte, Sucuri daha büyük, yüksek trafikli siteler için yeterince güçlü olmayabilir. Bu durumda, size güvenlik özelliklerinin yanı sıra etkileyici bir içerik dağıtım ağı (CDN) da sunabilen Cloudflare‘i düşünebilirsiniz.
Web siteniz için hangi seçeneğin en iyisi olduğundan emin değilseniz, neden Sucuri’den Cloudflare’e geçtiğimize dair makalemize veya Sucuri – Cloudflare karşılaştırmamıza göz atın.
2. WordPress Sürümünüzü Gizleyin
Varsayılan olarak WordPress, web sitenizde kullandığınız yazılımın geçerli sürüm numarasını görüntüler. Örneğin, WordPress 6.4 kullanıyorsanız, bu sürüm izleme için sitenizde görüntülenecektir.
Ancak sürüm numaranızın herkese açık olması güvenlik tehditleri yaratabilir ve bilgisayar korsanlarının WordPress SQL enjeksiyon saldırıları gerçekleştirmesini kolaylaştırabilir.
Bunun nedeni, WordPress’in her sürümünün, saldırganların sürümünüzü keşfettikten sonra yararlanabilecekleri kendi benzersiz güvenlik açıklarına sahip olmasıdır. Bu sayede, savunmasız giriş alanları aracılığıyla sitenize kötü amaçlı kod parçacıkları ekleyebilirler.
Aşağıdaki kod parçacığını functions.php dosyanıza ekleyerek sürüm numarasını sitenizden kolayca kaldırabilirsiniz.
add_filter('the_generator', '__return_empty_string');
Bunu yaptığınızda, bilgisayar korsanları WordPress sürüm numaranızı otomatik tarayıcılar veya başka herhangi bir yolla bulamazlar.
Not: Kod eklerken yapılacak küçük bir hatanın web sitenizi erişilemez hale getirebileceğini unutmayın. Bu yüzden WPCode‘u öneriyoruz. Sitenize özel kod eklemeyi süper güvenli ve kolay hale getiren en iyi kod parçacıkları eklentisidir.
Daha fazla ayrıntı için WordPress sürüm numarasını kaldırmanın doğru yolu hakkındaki eğitimimize bakın.
3. WordPress Veritabanı Önekini Değiştirin
WordPress varsayılan olarak tüm veritabanı dosyalarınıza wp_ önekini ekler, bu da bilgisayar korsanlarının öneki hedef alarak bir saldırı planlamasını kolaylaştırır.
SQL enjeksiyon saldırılarını önlemenin en kolay yolu, varsayılan veritabanı önekini bilgisayar korsanlarının tahmin edemeyeceği benzersiz bir şeyle değiştirmektir.
Bunu web sitenizi FTP kullanarak bağlayarak kolayca yapabilirsiniz. Bundan sonra, wp-config.php dosyasını açın ve $table_prefix
satırını değiştirin. Ardından, bunu basitçe varsayılan wp_
‘den şunun gibi başka bir şeye değiştirebilirsiniz: wp_a123456_
.
$table_prefix = 'wp_a123456_';
Ardından, web barındırma hesabınızın cPanel’ini ziyaret etmelisiniz. Bu eğitim için Bluehost kullanacağız. Ancak, cPanel’iniz web barındırma şirketinize bağlı olarak biraz farklı görünebilir.
Burada, ‘Gelişmiş’ sekmesine geçin ve ‘PHPMyAdmin’ bölümünün yanındaki ‘Yönet’ düğmesine tıklayın.
Bu, sol sütundan veritabanı adınızı seçmeniz ve üstten ‘SQL’ sekmesine geçmeniz gereken yeni bir sayfa açacaktır.
Bundan sonra, metin kutusuna aşağıdaki SQL sorgusunu ekleyebilirsiniz.
Sadece wp-config.php dosyasını düzenlerken veritabanı önekini seçtiğiniz önekle değiştirmeyi unutmayın.
RENAME table `wp_comments` TO `wp_a123456_comments`;
RENAME table `wp_links` TO `wp_a123456_links`;
RENAME table `wp_options` TO `wp_a123456_options`;
RENAME table `wp_postmeta` TO `wp_a123456_postmeta`;
RENAME table `wp_RENAME table `wp_commentmeta` TO `wp_a123456_commentmeta`;
posts` TO `wp_a123456_posts`;
RENAME table `wp_terms` TO `wp_a123456_terms`;
RENAME table `wp_termmeta` TO `wp_a123456_termmeta`;
RENAME table `wp_term_relationships` TO `wp_a123456_term_relationships`;
RENAME table `wp_term_taxonomy` TO `wp_a123456_term_taxonomy`;
RENAME table `wp_usermeta` TO `wp_a123456_usermeta`;
RENAME table `wp_users` TO `wp_a123456_users`;
Daha fazla talimat için, güvenliği artırmak için WordPress veritabanı ön ekinin nasıl değiştirileceğine ilişkin eğitimimize bakabilirsiniz.
4. Kullanıcı Verilerini Doğrulama
Bilgisayar korsanları genellikle yorum bölümleri veya iletişim formu alanları gibi kullanıcı verilerinin girildiği alanları kullanarak web sitenize SQL saldırıları enjekte ederler.
Bu nedenle WordPress blogunuza gönderilen tüm verileri doğrulamak önemlidir. Bu, kullanıcı verilerinin belirli bir formata uymaması durumunda sitenize gönderilmeyeceği anlamına gelir.
Örneğin, e-posta adresi alanında ‘@’ sembolü yoksa bir kullanıcı formunu gönderemez. Form alanlarınızın çoğuna bu doğrulamayı ekleyerek SQL enjeksiyon saldırılarını önleyebilirsiniz.
Bunu yapmak için, gelişmiş bir form oluşturucu eklentisi olan Formidable Forms‘a ihtiyacınız olacak. Kullanıcıların form alanı verilerini göndermek için izlemesi gereken formatı ekleyebileceğiniz bir ‘Giriş Maskesi Formatı’ seçeneği ile birlikte gelir.
Telefon numaraları veya tek metin alanları için belirli bir biçim ekleyebilirsiniz.
Form alanlarınızı doğrulamak istemiyorsanız, tam spam koruması ve Google reCAPTCHA desteği ile birlikte gelen en iyi iletişim formu eklentisi olduğu için WPForms ‘u öneririz.
Ayrıca formlarınıza açılır menüler ve onay kutuları eklemenize olanak tanıyarak bilgisayar korsanlarının kötü amaçlı veri eklemesini zorlaştırır.
Daha fazla ayrıntı için WordPress’te güvenli bir iletişim formu oluşturma hakkındaki eğitimimize bakın.
5. Kullanıcı Rolü Erişimini ve İzinlerini Sınırlayın
WordPress SQL enjeksiyon saldırılarını önlemek için bir başka ipucu da web sitenize kullanıcı erişimini sınırlamaktır.
Örneğin, çok yazarlı bir blogunuz varsa, aboneler ve yöneticilerle birlikte çeşitli yazarlarınız olacaktır. Bu durumda, tam yönetici erişimini yalnızca yöneticiyle sınırlandırarak site güvenliğini artırabilirsiniz.
Diğer tüm kullanıcı rollerini, işlerini yapmak için ihtiyaç duyacakları belirli işlevlerle kısıtlayabilirsiniz. Bu, veritabanınıza kullanıcı erişimini azaltacak ve SQL enjeksiyon saldırılarını önleyecektir.
Bunu ücretsiz Remove Dashboard Access eklentisi ile yapabilirsiniz. Etkinleştirmenin ardından, hangi kullanıcı rollerinin gösterge tablosuna erişebileceğini belirleyebileceğiniz Ayarlar ” Gösterge Tablosu Erişimi sayfasını ziyaret etmeniz yeterlidir.
Kullanıcıları yeteneklerine göre sınırlamak istiyorsanız, WordPress’te kullanıcı rollerine nasıl yetenek ekleneceği veya kaldırılacağı hakkındaki eğitimimize bakabilirsiniz.
Benzer şekilde, daha fazla güvenlik için yönetici alanınızda yazarları kendi gönderileriyle sınırlayabilirsiniz.
6. Özel Veritabanı Hata Mesajları Oluşturma
Bazen kullanıcılarınız web sitenizde bir veritabanı hatasıyla karşılaşabilir, bu da veritabanınızla ilgili önemli bilgileri görüntüleyebilir ve SQL enjeksiyon saldırılarına karşı savunmasız hale getirebilir.
Bu durumda, bu yaygın hatayla karşılaştıklarında kullanıcılara gösterilecek özel bir veritabanı hata mesajı oluşturmanızı öneririz. Bunu yapmak için, aşağıdaki içeriği kopyalayıp bir not defteri uygulamasına yapıştırmanız ve dosyayı ‘db-error.php’ olarak kaydetmeniz gerekecektir.
<?php // custom WordPress database error page
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 600'); // 1 hour = 3600 seconds
// If you wish to email yourself upon an error
// mail("your@email.com", "Database Error", "There is a problem with the database!", "From: Db Error Watching");
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Database Error</title>
<style>
body { padding: 20px; background: red; color: white; font-size: 60px; }
</style>
</head>
<body>
You got problems.
</body>
Bundan sonra, sitenizi bir FTP programına bağlayın ve yeni oluşturduğunuz dosyayı sitenizin /wp-content/ dizinine yükleyin.
Artık kullanıcılar web sitenizde bir veritabanı hatasıyla karşılaştıklarında, herhangi bir hassas bilgiyi açığa çıkarmadan onları sorun hakkında bilgilendiren bir hata mesajı görecekler.
Ayrıca, web tarayıcısı sekmesinde “Veritabanı Hatası” başlığı görüntülenecektir.
Daha fazla ayrıntı için WordPress’te özel bir veritabanı hata sayfasının nasıl ekleneceğine ilişkin eğitimimize bakın.
7. Gereksiz Veritabanı İşlevselliğini Kaldırın
SQL enjeksiyon saldırılarını önlemek için, web sitenizde ihtiyaç duymadığınız tüm veritabanı işlevlerini ve dosyalarını kaldırmayı da denemelisiniz.
Örneğin, veritabanınızı bilgisayar korsanlarına karşı hassas hale getirebilecek gereksiz tabloları, çöpleri veya onaylanmamış yorumları silebilirsiniz.
Gereksiz veritabanı işlevlerini kaldırmak için WP-Optimize‘ı öneriyoruz. Gereksiz tabloları, gönderi revizyonlarını, taslakları, çöpe atılan yorumları, silinen gönderileri, geri pingleri, gönderi meta verilerini ve çok daha fazlasını kaldıran harika bir eklentidir.
İhtiyacınız olmayan tüm dosyaları kaldırır ve veritabanınızı daha güvenli ve daha hızlı hale getirmek için optimize eder. Ayrıntılar için WordPress veritabanınızı nasıl optimize edeceğinize ilişkin başlangıç kılavuzumuza bakın.
Bonus: Güvenli Bir Site Oluşturmak için WPBeginner Pro Hizmetlerini Kullanın
SQL enjeksiyon saldırılarına karşı tüm önleyici tedbirleri aldıktan sonra, WPBeginner Pro Hizmetlerini de tercih edebilirsiniz.
Bilmediğiniz diğer güvenlik açıklarını tespit etmenize ve düzeltmenize yardımcı olabiliriz. Ayrıca, halihazırda bir SQL enjeksiyon saldırısıyla karşı karşıya kaldıysanız, uzmanlarımız hasarı kontrol altına almanıza ve sistemlerinizi kurtarmanıza yardımcı olabilir.
Ayrıca sitenizin hız optimizasyonunu, tasarımını, SEO’sunu iyileştirmek ve hatta saldırıya uğramış olsun ya da olmasın mevcut WordPress sitenizi tamamen yeniden inşa etmek için bizi kiralayabilirsiniz.
Daha fazla bilgi için tüm WPBeginner Profesyonel Hizmetlerimize göz atın.
Umarız bu makale WordPress SQL enjeksiyon saldırılarını nasıl önleyeceğinizi öğrenmenize yardımcı olmuştur. WordPress güvenlik güncellemelerinin nasıl kontrol edileceğine ilişkin yeni başlayanlar için rehberimizi veya WordPress güvenliği için nihai rehberimizi de görmek isteyebilirsiniz.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
Jiří Vaněk
WordPress security is alpha and omega for me. Related to that is SQL, which I’ve never paid much attention to. Thanks for this list of great tips. I’m going to check my blog right away to see what I can improve according to your list. At least I’ll try to hide the version and so on.