WordPress Web Sitenizi SQL Enjeksiyonlarına Karşı Nasıl Korursunuz?

Yayınlanan: 2022-03-09

WordPress, geniş potansiyel uygulama yelpazesi nedeniyle en çok kullanılan web sitesi oluşturma platformlarından biridir. Çevrimiçi bir mağaza oluşturabilir, en sevdiğiniz hobiniz hakkında bir blog barındırabilir, forumlar aracılığıyla bir topluluk oluşturabilir veya büyük bir şirketi temsil edebilirsiniz.

Ancak onu nasıl kullanırsanız kullanın, sitenizi bilgisayar korsanlarından korumak birincil sorumluluktur. Bu nedenle, Structured Query Language (SQL) enjeksiyon saldırılarının nasıl önleneceğini anlamak önemlidir.

İyi haber şu ki, WordPress sitenizi bu kötü amaçlı koddan korumak için atabileceğiniz birçok adım var. SQL enjeksiyonlarını nasıl algılayacağınızı, kaldıracağınızı ve önleyeceğinizi öğrenmek, değerli verilerinizi etkili bir şekilde korumanıza ve saldırılara karşı daha az duyarlı olmanıza yardımcı olabilir.

SQL enjeksiyonu nedir ve nasıl çalışır?

Enjeksiyonların nasıl çalıştığını anlamak için önce SQL'in ne olduğunu öğrenmek faydalı olacaktır. Bu, veritabanı geliştirmede kullanılan ortak bir dildir.

Web siteniz, veritabanınızdan kritik bilgileri almak ve dinamik içerik oluşturmak için bunu kullanır. SQL veritabanlarından bazıları MySQL (WordPress siteleri), MongoDB ve SQL Server'ı içerir.

WordPress web siteniz, sayfalarınız, gönderileriniz ve yorumlarınız gibi sitenizin temel verilerini ve içeriğini yönetmek için bir veritabanı kullanır. Bu bilgileri tablolar halinde düzenler.

WordPress veritabanındaki tabloların görünümü

Veritabanınız, en hassas verilerinizin depolandığı yerdir. Bu nedenle, onu açığa çıkaran herhangi bir saldırının ciddi sonuçları olabilir.

SQL enjeksiyonu (SQLI), siber suçluların WordPress veritabanlarına sızmak ve bunları değiştirmek için kullandığı bir hack yöntemi türüdür. Esasen, bilgisayar korsanları web sitelerinin arka uç kodlamasındaki boşluklardan yararlanabilir ve veri giriş alanlarına kötü amaçlı kod ekleyebilir.

Bu kod, kötü niyetli aktörlerin sorgu dizeleri, tanımlama bilgileri ve <input> öğelerini kullanarak web istekleri aracılığıyla veritabanı sunucularına SQL komutları yürütmesine olanak tanır. Bu, WordPress veritabanınızdaki verileri oluşturabilecekleri, erişebilecekleri, değiştirebilecekleri ve ortadan kaldırabilecekleri anlamına gelir.

Bunun meydana gelebileceği birçok farklı giriş noktası vardır. En sık kullanılan giriş alanları, kayıt, oturum açma ve iletişim formlarının yanı sıra arama çubuklarını ve alışveriş sepetlerini içerir.

Diyelim ki web sitenizde ziyaretçilerin telefon numaralarını girebilecekleri bir formunuz var. Siber suçlular, yönetici kullanıcı adı ve şifresini isteyen kötü amaçlı kod girmek için bu giriş alanını kullanabilir.

SQL enjeksiyon türleri

Birkaç farklı SQL enjeksiyonu türü vardır. Bir kategori, "bant içi" olarak bilinen şeydir. Bu, en basit enjeksiyon türüdür ve hataya dayalı saldırıları içerir.

Bu teknikle bilgisayar korsanları, veri tabanı yapısı ve tablo adları hakkında ayrıntılar elde etmek için enjeksiyonu kullanır. Örneğin, bir hata mesajı, bir sorguya dahil edilen tablo adını sağlayabilir. Daha sonra bilgisayar korsanı bu bilgileri yeni saldırılar oluşturmak için kullanabilir.

Başka bir tür, “kör SQL enjeksiyonu” olarak adlandırılan şeydir. Bu, saldırganın sitenin yanıtları nasıl analiz ettiğini öğrenmek için veritabanına çeşitli sorgular gönderdiği zamandır. Bunu yapmak, olası güvenlik açıklarını belirlemek için SQL sorgularına verilen yanıtları araştırmalarına ve veritabanından verileri harici bir kaynağa iletmesini istemelerine yardımcı olabilir.

SQL enjeksiyonları ne kadar yaygındır?

Ne yazık ki, SQL enjeksiyon saldırıları yaygındır. Aslında, Akamai tarafından 2017 ile 2019 arasında yayınlanan bir rapora göre, yazılım uygulamalarına yönelik saldırıların yaklaşık üçte ikisi SQL enjeksiyonlarına atfedildi.

Ayrı bir 2020 Güvenlik Açığı İstatistikleri Raporu ayrıca SQL enjeksiyonlarının en yaygın kritik güvenlik açıklarının yüzde 42'sini oluşturduğunu ortaya koydu.

SQL enjeksiyonları, özellikle iletişim formları ve arama kutuları gibi giriş alanları olan WordPress tabanlı siteler gibi SQL veritabanlarını kullanan herhangi bir web sitesi için bir olasılıktır.

SQL enjeksiyonları neden tehlikelidir?

SQL enjeksiyonları birkaç nedenden dolayı tehlikelidir. İlk olarak, bilgisayar korsanlarına oturum açma bilgileriniz veya müşteri verileriniz gibi hassas bilgileri çalma fırsatı verirler.

Bilgisayar korsanları SQL enjeksiyonunu yalnızca veri almak ve çalmak için kullanmakla kalmaz, aynı zamanda bu verileri silmek için de kullanabilirler. Bu, web sitenizi çalıştırmak için kullanılan özel ve önemli bilgileri kaybetme riskiniz olduğu anlamına gelir.

Ayrıca, itibarın zedelenmesi ve gelir kaybı riski vardır. Bir veri ihlali işinize zarar verebilir ve müşterilerinizin veya hayranlarınızın güvenini kaybedebilirsiniz.

Ayrıca, bu saldırılar Google'ın sitenizi engellenenler listesine almasına neden olabilir. Bu listeye girerseniz, birçok potansiyel ziyaretçi sitenizin güvenli olmadığına dair bir uyarı alır. Bu insanların çoğu geri dönecek ve asla geri dönmeyebilir. Ayrıca, Google ayrıca arama sıralamalarınızı önemli ölçüde düşürür - bu da kurtarılması zor, büyük, uzun vadeli bir organik trafik kaybına yol açabilir.

SQL enjeksiyonları nasıl tespit edilir

Bir SQL enjeksiyon saldırısının kurbanı olduğunuzu gösteren birkaç işaret vardır. Birincisi, sitenizin iletişim formu aracılığıyla aniden bir e-posta akışı alıyor olmanızdır. Başka bir gösterge, garip pop-up'lar, reklamlar ve hata mesajları alıyorsanız, özellikle de sizi görünüşte kabataslak web sitelerine yönlendiriyorlarsa.

Ne yazık ki, bir SQL enjeksiyon saldırısının belirtileri her zaman çok açık değildir. Daha önce de belirttiğimiz gibi, bazen bilgisayar korsanları, web sitenize zarar vermek yerine bilgi çalmak için enjeksiyonları kullanmak ister. Bu nedenle, algılamayı zorlaştıran daha incelikli yöntemler kullanabilirler.

SQL enjeksiyon algılama ve tarama araçları

Hedeflenip hedeflenmediğinizden emin olmanın tek yolu, web sitenizde bir tarama yapmaktır. Neyse ki, WordPress sitenizdeki SQL enjeksiyonlarını tespit etmenize yardımcı olabilecek çeşitli çevrimiçi araçlar var.

Örneğin, web sitenizde iki ücretsiz tarama yapmak için Pentest Araçlarını kullanabilirsiniz.

PenTest araçları ana sayfası

İki seçenek vardır: Hafif tarama veya Tam tarama. İkincisi için ücretli bir plana geçmeniz gerekir. Web sitenizin URL'sini girin ve Hedefi tara düğmesine tıklayın. Mevcut herhangi bir güvenlik açığı varsa, tarama bunları ortaya çıkaracaktır.

WordPress web sitenizden SQL enjeksiyonları nasıl kaldırılır

1. Bir yedeği geri yükleyin

SQL enjeksiyonlarını kaldırmak için en iyi seçeneğiniz sitenizin yedeğini geri yüklemektir. Jetpack Backup kullanıyorsanız, saldırının ne zaman gerçekleştiğini belirlemek için etkinlik günlüğünü kullanmanız ve bu noktadan önceki bir yedeği geri yüklemeniz yeterlidir. Siteniz, saldırıdan önceki durumuna döndürülecektir.

Ancak, bazı durumlarda SQL enjeksiyonlarının zaman içinde azar azar yapıldığını belirtmek önemlidir. Veri kaybına neden olabilecek temiz bir yedekleme bulmak için oldukça geriye gitmeniz gerekebilir.

Ve bir yedeği geri yüklemek sitenizi tekrar çalışır duruma getirebilse de, hassas veriler çalındıysa, yine de ihlalin sonuçlarıyla uğraşmak zorunda kalacaksınız.

2. Bir web sitesi temizleme hizmeti kullanın

Başka bir seçenek de sitenizi taramak ve SQL enjeksiyonlarını düzeltmek için üçüncü taraf bir web sitesi temizleme hizmeti kullanmaktır. Sucuri bir seçenektir - web sitenizi ekiplerine göndermeniz ve diğer her şeyle ilgilenmelerine izin vermeniz yeterlidir. Uzman olduklarından, kötü amaçlı yazılımları ortalama bir geliştiriciden daha etkili bir şekilde veritabanınızdan kaldırabilirler.

3. Enjeksiyonları kendiniz çıkarın

Son olarak, MySQL ile yönetme ve çalışma deneyiminiz varsa, veritabanınızı manuel olarak temizleyebilirsiniz. Ancak bunun gelişmiş bir teknik olduğunu ve ne yaptığınızı bilmiyorsanız herhangi bir değişiklik yapmanın sorunlara yol açabileceğini unutmayın.

Gelecekte SQL enjeksiyonları nasıl önlenir

Sitenizin hiçbir zaman yüzde 100 güvenli olmasını sağlamanın bir yolu yoktur, ancak saldırı riskinizi en aza indirmek için alabileceğiniz önlemler vardır. WordPress'te SQL enjeksiyonlarını önlemek için kullanabileceğiniz sekiz yönteme bir göz atalım.

1. Verilerinizi doğrulayın (veya sterilize edin)

WordPress'te SQL enjeksiyonlarını önlemenin anahtarı, web sitenize veri veya içerik girmek için kullanılabilecek herhangi bir giriş alanını güvence altına almaktır. Buna yorum bölümleri ve formlar dahildir. Bu nedenle, gönderildikten sonra bu alanlara girilen verileri doğrulamak ve sterilize etmek önemlidir.

Giriş doğrulama ve temizleme, kullanıcılar tarafından gönderilen komutları kontrol etmenizi sağlar. Sanitization, komutları değiştirmenize bile izin verir. Bu komutların kötü amaçlı kod veya karakter dizileri içermemesini sağlamanın etkili bir yoludur.

Doğrulama, bir forma girilen bilgilerin, talebi işleme koymadan önce istenen formatla eşleşmesini sağlar. Örneğin, bir e-posta adresi için bir giriş alanınız varsa, '@' sembolü yoksa veriler doğrulanmayacaktır.

Form verileriniz için doğrulama oluşturmanın en kolay yolu, formlarınız için kurallar oluşturmaktır. Bunu yapma süreci, kullandığınız belirli eklentiye bağlı olacaktır. Örneğin, Formidable Forms'un premium sürümünü kullanıyorsanız, kendi özel Giriş Maskesi Formatınızı ekleyebilirsiniz. metin alanları için.

WordPress'te form alanlarına doğrulama ekleme

Giriş formatı gereksinimleri eklemek, SQL enjeksiyon riskini sınırlayabilir. Temizleme, girilen verilerin doğrulandıktan sonra işlenmesinin güvenli olmasını sağlamaya yardımcı olabilir.

Çoğu WordPress form eklentisi, form verilerini otomatik olarak temizler. Ancak, ek güvenlik önlemleri ekleyebilirsiniz. Açık uçlu cevaplar yerine, açılır menüler ve çoktan seçmeli seçenekler kullanmayı düşünün. Özel karakterlerin kullanımını da kısıtlayabilirsiniz.

2. Bir WordPress güvenlik aracı yükleyin

Jetpack'in WordPress güvenlik eklentisi, sitenizi SQL enjeksiyonlarına yol açabilecek güvenlik açıkları için izleyebilir. Bu size, birileri avantaj elde etmeden önce bunları düzeltme fırsatı verir.

Kesinti süresi izleme ile, sitenizin kapandığı an anlarsınız, böylece hızlı tepki verebilirsiniz. Ve gerçek zamanlı yedeklemelerle sitenizi tam olarak geri yükleyebilirsiniz.

Ayrıca aşağıdakiler gibi güvenlik araçları sağlar:

  • WordPress dosyalarınız için kötü amaçlı yazılım taraması ve sorunların çoğu için tek tıklamayla düzeltmeler
  • Yorumlarınızı ve iletişim formlarınızı korumak için istenmeyen posta önleme çözümleri
  • Bilgisayar korsanlarını dışarıda tutmak için kaba kuvvet saldırısı koruması

3. Web sitenizi ve veritabanınızı her zaman güncel tutun

Eski yazılım ve araçları kullanmak, sitenizde bilgisayar korsanlarının yararlanabileceği çok çeşitli güvenlik açıkları oluşturabilir. Bu nedenle, WordPress web sitenizi her zaman güncel tuttuğunuzdan emin olmanız önemlidir.

Şu anda, WordPress kurulumlarının neredeyse yarısı en güncel sürümü kullanmıyor. Bu nedenle, her zaman WordPress'in en yeni sürümünü çalıştırdığınızdan emin olmak için otomatik güncellemeleri etkinleştirmeyi düşünebilirsiniz.

Bunu Core güncellemeleri için yapmak için şuraya gidebilirsiniz: wp-config.php dosyasını web sitenizin kök dizininde bulun. Ardından, aşağıdaki kod parçasını kopyalayıp dosyaya yapıştırın:

 define( 'WP_AUTO_UPDATE_CORE', true );

Eklentiler'e giderek eklentileriniz için otomatik güncellemeleri etkinleştirebilirsiniz. yönetici kontrol panelinizden ekran. Ardından, tıklayın En sağdaki sütundan Otomatik Güncelleştirmeleri etkinleştirin .

WordPress'te otomatik güncellemeleri etkinleştirme

Güvenlik açıklarını en aza indirmek için sitenizden kullanılmayan eklentileri veya temaları kaldırmanızı öneririz. SQL sürümünüzü güncellemek de akıllıca olur. Barındırma kontrol paneliniz için cPanel kullanıyorsanız, MySQL yazılımınızı kontrol panelinizden güncelleyebilirsiniz. Barındırma sağlayıcınıza bağlı olarak, otomatik SQL güncellemelerini etkinleştirebilirsiniz.

4. WordPress veritabanı önekinizi değiştirin

Varsayılan olarak, WordPress'i her yüklediğinizde, CMS veritabanı öneki olarak "wp_" kullanır. Bilgisayar korsanları bunu SQL enjeksiyonu yoluyla güvenlik açıklarından yararlanmak için kullanabileceğinden, bunu başka bir şeyle değiştirmenizi önemle tavsiye ederiz.

Başlamadan önce, veritabanınızı yedeklemelisiniz. Bu şekilde, bir şeyler ters giderse, geri yüklemek için güvenli bir sürümünüz olur.

Ardından, FTP istemcisi veya sunucunuzun Dosya Yöneticisi aracılığıyla sitenize bağlanın ve sitenizin kök dizininde bulunan wp-config.php dosyasına göz atın. Dosyada table_prefix satırını arayın, ardından “wp_”yi başka bir şeyle değiştirin:

 $table_prefix  = 'wp_a12345_';

İşiniz bittiğinde dosyayı kaydedin. Bu kadar!

5. Güvenlik duvarı kullanın

SQL enjeksiyonuna karşı koruma sağlamak için kullanabileceğiniz başka bir strateji de bir güvenlik duvarı kurmaktır. Bu, WordPress sitenize gelen verileri izlemenize ve kontrol etmenize yardımcı olan bir ağ güvenlik sistemidir. Bu, SQL enjeksiyon saldırılarından kaynaklananlar da dahil olmak üzere kötü amaçlı kodları yakalayabilir ve filtreleyebilir.

Kullanabileceğiniz çok çeşitli WordPress güvenlik duvarı araçları vardır. Bazı popüler seçenekler arasında Wordfence ve Sucuri bulunur. Bu araçlar, saldırganların komut göndermesini engellemez, ancak sitenize gerçekten erişmelerini engellemeye yardımcı olabilir.

6. Kullanmakta olduğunuz WordPress sürümünü gizleyin

WordPress sitenizin sürümünün herkese açık olması, her sürüm kendi setiyle birlikte geldiğinden, saldırganların bilinen güvenlik açıklarından yararlanmalarını kolaylaştırabilir. Bu nedenle sitenizi korumak için kullandığınız sürümü gizlemenizi öneririz.

Bunu yapmak hızlı ve kolaydır. Başlamak için aşağıdaki kod parçasını kopyalamanız yeterlidir:

 remove_action('wp_head', 'wp_generator');

Ardından, mevcut WordPress temanızın functions.php dosyasına gidin. Bunu doğrudan WordPress'teki Tema Düzenleyici'den , bir FTP istemcisi kullanarak veya ana makinenizin Dosya Yöneticisini kullanarak yapabilirsiniz. Kodu dosyanın içine yapıştırın, ardından değişikliklerinizi kaydedin.

7. Gereksiz veritabanı işlevselliğini ortadan kaldırın

WordPress veritabanınız ne kadar işlevselliğe sahipse, saldırıya o kadar duyarlıdır. SQL enjeksiyon riskinizi en aza indirmek için veritabanınızı normalleştirmeyi ve gereksiz işlevleri ve içeriği ortadan kaldırmayı düşünün.

Özetle, veritabanı normalleştirme, verilerinizi düzenleme sürecini ifade eder. Bunu yapmanın amacı, veritabanınızdaki gereksiz verileri ortadan kaldırmak ve tüm veri bağımlılıklarının anlamlı olduğundan emin olmaktır. Bunu, veritabanınızı First Normal Form'a koyarak yapabilirsiniz.

WordPress veritabanınızı temizlemek için daha acemi dostu bir seçenek istiyorsanız, bir eklenti kullanabilirsiniz. WP-Optimize gibi aralarından seçim yapabileceğiniz bir avuç sağlam seçenek var.

Bu freemium eklentisi, phpMyAdmin aracılığıyla SQL komutlarını manuel olarak çalıştırmanıza gerek kalmadan veritabanınızı temizlemenize yardımcı olur. Bunun yerine, veritabanınızı doğrudan WordPress panonuzdan optimize etmek için kullanabilirsiniz.

veritabanı tablosu optimizasyon seçenekleri

Çöp ve onaylanmamış yorumlar da dahil olmak üzere tüm gereksiz bilgileri veritabanınızdan kaldırır. WP-Optimize, MySQL veritabanı tablolarınızı tek bir tıklamayla birleştirmenize de olanak tanır.

8. Kullanıcı erişimini ve izinlerini sınırlayın

Web sitenizde WordPress kullanıcıları için çeşitli roller atayabilirsiniz. Bunlar, bir aboneden bir yöneticiye kadar herhangi bir yerde olabilir. Her rolle, ne kadar erişim sağlandığını ve hangi "yeteneklerin" verildiğini kontrol edebilirsiniz.

Güvenliğinizi güçlendirmeye yardımcı olmak için, tam yönetici erişimi ve kullanıcı izinleriyle rol sayısını sınırlamak en iyisidir. Verileri değiştirebilen ve girebilen ne kadar az kişi olursa, bir SQL enjeksiyon saldırısıyla karşılaşma olasılığınız o kadar düşük olur.

WordPress'te kullanıcı rollerini ve izinlerini özelleştirmek için Kullanıcılar → Tüm Kullanıcılar seçeneğine gidebilirsiniz.

Panodaki WordPress kullanıcıları

Ardından, erişimini ve izinlerini sınırlamak istediğiniz kullanıcının adının altındaki Düzenle bağlantısını tıklayın. Bir sonraki ekranda, açılır Rol menüsünü kullanarak rollerini değiştirebilirsiniz.

WordPress kullanıcı rollerinizi yönetirken, artık kullanılmayan hesapları da silmenizi öneririz. Güncel olmayan rolleri ortadan kaldırmak, güvenlik açıklarınızı en aza indirebilir.

9. Boş eklentiler kullanmaktan kaçının

Nulled eklentiler, çalınmış ve ücretsiz olarak sunulan premium araçlardır. Çok fazla gibi görünseler de, yalnızca orijinal geliştiriciye çalışmaları için ödeme yapmayarak zarar vermekle kalmaz, aynı zamanda bir hack riskini de alırsınız.

Nulled eklentiler genellikle kötü amaçlı kodlarla ve bilgisayar korsanlarına sitenize kolay bir ağ geçidi sağlayan arka kapılarla doludur. Ne pahasına olursa olsun bunlardan kaçının ve bunun yerine saygın kaynaklardan gelen eklentileri kullanın.

WordPress sitenizi SQL enjeksiyonlarından koruyun

Web sitenizi ve verilerinizi siber suçluların tehdidinden korumak için sitenize erişmek için kullanılan en yaygın yöntemlerden bazılarının farkında olmanız önemlidir. Veritabanınızın güvenliğini güçlendirmek söz konusu olduğunda, bu, SQL enjeksiyonlarında çok bilgili olmak anlamına gelir.

Bu yazıda tartıştığımız gibi, bir SQL enjeksiyonunun WordPress siteniz üzerinde hassas verilerin ifşa edilmesinden içerik ve gelir kaybına kadar zararlı etkileri olabilir. Neyse ki, enjeksiyon saldırılarını tespit etmek, kaldırmak ve önlemek için atabileceğiniz birkaç adım var.

Hiçbir web sitesi tamamen güvenli değildir, ancak yukarıdaki ipuçlarını ve teknikleri izleyerek SQL enjeksiyonlarının kurbanı olma şansınızı önemli ölçüde azaltabilirsiniz.