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, hackerların veritabanınıza saldırmak için kullandığı yaygın bir tekniktir. Bunu yaptıklarında, hackerlar hassas verilerinizi okuyabilir, değiştirebilir ve tüm veritabanınızın kontrolünü ele geçirebilirler.
Web sitenizi bu tehditten korumak için web sitenizde güçlü güvenlik önlemleri uygulamanız çok önemlidir.
WPBeginner olarak güvenliği çok ciddiye alıyoruz ve sitemizi bilgisayar korsanlarından ve kötü amaçlı yazılımlardan korumak için fazladan çaba gösterdik. SQL enjeksiyon saldırılarına karşı önerdiğimiz güvenlik uygulamalarının çoğu, kendimizin başarıyla kullandığı yöntemlerdir.
Bu makalede, WordPress'te SQL enjeksiyon saldırılarını önlemek için adım adım uygulanabilir ipuçları paylaşacağız.

WordPress SQL Enjeksiyon Saldırılarını Neden Önlemelisiniz?
SQL, WordPress sitenizin veritabanıyla iletişim kuran bir programlama dili olan Yapılandırılmış Sorgu Dili'nin kısaltmasıdır. Bu özellik olmadan siteniz herhangi bir dinamik içerik üretemez.
Ancak, yetkisiz kullanıcı girdisi, 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 hedefler ve SQL'inize kötü amaçlı kod veya ifadeler ekler. Bunu yaptıktan sonra bilgisayar korsanları, kimlik hırsızlığı, hesap devralma, finansal dolandırıcılık ve daha fazlası için veritabanınızda depolanan kullanıcı verileri gibi hassas bilgileri kullanabilir.
Ayrıca veritabanı girişlerini veya hesap izinlerini değiştirebilir ve gerçek kullanıcıların web sitenizi ziyaret etmesini zorlaştıran DDoS saldırıları gerçekleştirebilirler.
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.
Bununla birlikte, WordPress'te SQL enjeksiyon saldırılarını önleyebilecek bazı uygulanabilir ipuçlarına bakalım. İşte bu makalede bahsedeceklerimizin hızlı bir özeti:
- Site Güncellemelerini Düzenli Olarak Yapın ve Bir Güvenlik Duvarı Kullanın
- WordPress Sürümünüzü Gizleyin
- WordPress Veritabanı Önekini Değiştirin
- Kullanıcı Verilerini Doğrula
- Kullanıcı Rolü Erişimini ve İzinlerini Sınırlayın
- Özel Veritabanı Hata Mesajları Oluşturun
- Gereksiz Veritabanı İşlevselliğini Kaldırın
Not: Önleyici tedbirler için veritabanınızda herhangi bir değişiklik yapmadan önce, bir yedeğini oluşturmanızı öneririz. Bu şekilde, bir şeyler ters giderse, onu düzeltmek için yedekten yararlanabilirsiniz. Ayrıntılar için WordPress veritabanı yedeğinin manuel olarak nasıl oluşturulacağına ilişkin eğitimimize bakın.
1. Site Güncellemelerini Düzenli Olarak Yapın ve Bir 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üncellemenizdir. Bu güncellemeler genellikle veritabanı yazılımı sorunları da dahil olmak üzere güvenlik açıklarını kapatır ve bilgisayar korsanlarının sitenize saldırmasını zorlaştırır.
Eski bir WordPress sürümü kullanıyorsanız, Kontrol Paneli » Güncellemeler sayfasını ziyaret ederek en son sürüm için otomatik güncellemeleri etkinleştirmenizi öneririz.
Burada, 'Tüm yeni WordPress sürümleri için otomatik güncellemeleri etkinleştir' bağlantısına tıklamanız yeterlidir. Artık tüm büyük güncellemeler yayınlandığında sitenize yüklenecektir.

Daha fazla bilgi için, WordPress'in güvenli bir şekilde nasıl güncelleneceğine ilişkin başlangıç kılavuzumuza bakmak isteyebilirsiniz.
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 sitenize ulaşmadan SQL saldırıları da dahil olmak üzere yaygın güvenlik tehditlerini engeller.
Küçük bir çevrimiçi işletme yürütüyorsanız, piyasadaki en iyi WordPress güvenlik duvarı yazılım seçeneklerinden biri olan Sucuri'yi öneririz. Bir uygulama düzeyinde güvenlik duvarı, kaba kuvvet önleme ve kötü amaçlı yazılım ile kara liste kaldırma hizmetleri sunar, bu da onu harika bir seçim haline getirir.

Araçla ilgili ilk elden deneyimimiz var. Hatta geçmişte web sitemizdeki 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) sunabilen Cloudflare'ı düşünebilirsiniz.
Hangi seçeneğin web siteniz için en iyisi olduğundan emin değilseniz, Sucuri'den Cloudflare'a neden geçtiğimize ilişkin makalemizi veya Sucuri - Cloudflare karşılaştırmamızı inceleyin.
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 genel görünürlüğü güvenlik tehditleri oluşturabilir 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 istismar edebilecekleri kendi benzersiz güvenlik açıklarına sahip olmasıdır. Bu, savunmasız girdi alanları aracılığıyla sitenize kötü amaçlı kod parçacıkları eklemelerine olanak tanır.
Sürüm numarasını, aşağıdaki kod parçasını functions.php dosyanıza ekleyerek sitenizden kolayca kaldırabilirsiniz.
add_filter('the_generator', '__return_empty_string');
Bunu yaptıktan sonra, bilgisayar korsanları WordPress sürüm numaranızı otomatik tarayıcılar veya başka herhangi bir yolla bulamayacaklardır .
Not: Kod eklerken küçük bir hatanın web sitenizi erişilemez hale getirebileceğini unutmayın. Bu nedenle, WPCode'u öneririz. Özel kodu sitenize eklemeyi süper güvenli ve kolay hale getiren en iyi kod parçacığı 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
Varsayılan olarak WordPress, tüm veritabanı dosyalarınıza wp_ önekini ekler, bu da saldırganların öneki hedefleyerek 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. Ardından, wp-config.php dosyasını açın ve $table_prefix satırını bulun ve değiştirin. Ardından, bunu basitçe varsayılan wp_'den şuna benzer 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'u 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, veritabanı adınızı sol sütundan seçmeniz ve üstteki 'SQL' sekmesine geçmeniz gereken yeni bir sayfa açacaktır.
Bundan sonra, aşağıdaki SQL sorgusunu metin kutusuna ekleyebilirsiniz.

Yalnızca wp-config.php dosyasını düzenlerken seçtiğiniz veritabanı önekini 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, WordPress veritabanı önekini güvenliği artırmak için değiştirme hakkındaki eğitimimize bakabilirsiniz.
4. Kullanıcı Verilerini Doğrulayın
Bilgisayar korsanları genellikle web sitenize SQL saldırıları enjekte ederler, kullanıcı verilerini girmek için kullanılan alanlar aracılığıyla, örneğin yorum bölümleri veya iletişim formu alanları gibi.
Bu nedenle, WordPress blogunuzda gönderilen tüm verileri doğrulamak önemlidir. Bu, kullanıcı verilerinin belirli bir formata uymuyorsa sitenizde gönderilmeyeceği anlamına gelir.
Örneğin, bir kullanıcı e-posta adresi alanında '@' sembolü yoksa formunu gönderemez. Bu doğrulamayı form alanlarınızın çoğuna 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 uyması gereken formatı ekleyebileceğiniz bir 'Girdi Maskesi Biçimi' seçeneği ile birlikte gelir.
Telefon numaraları veya tek metin alanları için belirli bir format ekleyebilirsiniz.

Form alanlarınızı doğrulamak istemiyorsanız, o zaman WPForms'ı öneririz çünkü spam koruması ve Google reCAPTCHA desteği ile birlikte gelen en iyi iletişim formu eklentisidir.
Ayrıca formlarınıza açılır menüler ve onay kutuları eklemenize olanak tanır, bu da 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 diğer ipucu da web sitenize kullanıcı erişimini sınırlamaktır.
Örneğin, çok yazarlı bir blogunuz varsa, aboneler ve yöneticilerin yanı sıra çeşitli yazarlarınız olacaktır. Bu durumda, tam yönetici erişimini yalnızca yöneticiyle sınırlayarak site güvenliğini artırabilirsiniz.
Diğer tüm kullanıcı rollerini, işlerini yerine getirmeleri için gereken belirli işlevlerle sınırlayabilirsiniz. Bu, veritabanınıza kullanıcı erişimini azaltacak ve SQL enjeksiyon saldırılarını önleyecektir.
Bunu ücretsiz Remove Dashboard Access eklentisiyle yapabilirsiniz. Etkinleştirdikten sonra, hangi kullanıcı rollerinin panoya erişebileceğine karar verebileceğiniz Ayarlar » Pano Erişimi sayfasına gidin.

Kullanıcıları yeteneklerine göre sınırlamak istiyorsanız, kullanıcı rollerine yetenek ekleme veya kaldırma hakkındaki eğitimimize bakabilirsiniz.
Benzer şekilde, daha fazla güvenlik için yazarları kendi gönderileriyle sınırlayabilirsiniz.
6. Özel Veritabanı Hata Mesajları Oluşturun
Bazen kullanıcılarınız web sitenizde bir veritabanı hatasıyla karşılaşabilirler, bu da veritabanınız hakkında önemli bilgiler gösterebilir 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 bir not defteri uygulamasına kopyalayıp 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 az önce 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 sorun hakkında onları bilgilendiren bir hata mesajı görecekler.

Ayrıca, "Veritabanı Hatası" başlığı web tarayıcı sekmesinde görüntülenecektir.
Daha fazla ayrıntı için, WordPress'te özel bir veritabanı hata sayfası ekleme hakkındaki eğitimimize bakın.
7. Gereksiz Veritabanı İşlevselliğini Kaldırma
SQL enjeksiyon saldırılarını önlemek için, web sitenizde ihtiyacınız olmayan tüm veritabanı işlevlerini ve dosyalarını kaldırmaya çalışmalısınız.
Örneğin, veritabanınızı bilgisayar korsanlarına karşı savunmasız hale getirebilecek gereksiz tabloları, çöp kutusunu veya onaylanmamış yorumları silebilirsiniz.
Gereksiz veritabanı işlevselliğini kaldırmak için WP-Optimize'ı öneririz. Gereksiz tabloları, gönderi revizyonlarını, taslakları, silinmiş yorumları, silinmiş gönderileri, pingback'leri, 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ı optimize etme hakkındaki başlangıç kılavuzumuza bakın.
Bu makalenin WordPress SQL enjeksiyon saldırılarını nasıl önleyeceğinizi öğrenmenize yardımcı olduğunu umuyoruz. Ayrıca yeni başlayanlar için WordPress güvenlik güncellemelerini nasıl kontrol edeceğinize dair rehberimizi veya WordPress güvenliğine ilişkin nihai rehberimizi de incelemek isteyebilirsiniz.
Bu makaleyi beğendiyseniz, lütfen WordPress video eğitimleri için YouTube Kanalımıza abone olun. Bizi ayrıca Twitter ve Facebook'ta da bulabilirsiniz.


Moinuddin Waheed
Bu, WordPress sürümünü kolayca gizleyebileceğim benim için yeni, bu da varsayılan olarak bilgisayar korsanlarının WordPress sürümlerine ve onların açıkları üzerinden zayıflıkları tahmin etmelerini engelleyecektir.
Web sitesini SQL enjeksiyonundan korumak için harika ipuçları.
Web sitemi herhangi bir güvenlik açığına karşı kusursuz hale getirmek için bu numaraları uygulayacağım.
Oyatogun Oluwaseun Samuel
Benim için wordpress sürümünü gizlemek yeni bir şey. Her wordpress sürümü kendi zafiyetleriyle gelir, bu nedenle sürüm numarasını gizlemek, bilgisayar korsanlarını hangi wordpress sürümünün kullanıldığı konusunda bilgisiz bırakacaktır, ilgili zafiyetlerden bahsetmiyorum bile, haber verdiğiniz için teşekkürler. Ayrıca, kullanıcı girdisi toplayan bir eklenti geliştiriyorsanız, veritabanına eklenecek kullanıcı girdilerini (normal doğrulama sonrası) kaçış karakterleriyle temizlemenin akıllıca olacağını düşünüyorum.
Jiří Vaněk
WordPress güvenliği benim için alfa ve omega. Bununla ilgili olarak, hiç dikkat etmediğim SQL var. Harika ipuçları listesi için teşekkürler. Listeye göre neleri iyileştirebileceğimi görmek için blogumu hemen kontrol edeceğim. En azından sürümü gizlemeye çalışacağım ve bunun gibi şeyler.