WordPress eklentileri ve tema geliştiricileri için on altı güvenlik ipucu
Yayınlanan: 2021-10-19İnsan asla çok dikkatli olamaz!
Geliştiriciler olarak işimizin büyük bir kısmı, inşa ettiğimiz sitelerin ve eklentilerin güvenli olduğundan emin olmaktır.
İşletmeler, giderek daha karmaşık işlevselliğe sahip daha hızlı çözümlere ihtiyaç duyuyor. Bu iyi bir ilerleme olsa da, karmaşık projeler oluşturmak aynı zamanda uygun bir güvenlik kurulumu gerektirir. WordPress güvenliği, web sitesi geliştirmenin en önemli yönlerinden biridir.
Özelliklerin artan karmaşıklığı ile birçok geliştirici, temel web sitesi ve web uygulaması geliştirme güvenlik ilkelerini kaçırıyor. Bu, siber saldırılara ve diğer risklere açık kusurlu bir web sitesiyle sonuçlanır.
Bu nedenle, projenizi oluştururken bazı temel web sitesi ve web uygulaması geliştirme güvenlik protokollerini uygulamanız önemlidir.
Aşağıda, web geliştiricileri için sitenizin güvenli ve sağlam kalmasına yardımcı olacak 16 güvenlik ipucu verilmiştir.
1. Hangi verilerin korunması gerektiğini belirleyin
En önemli web sitesi geliştirme güvenlik ilkelerinden biri, yalnızca gerekli verileri depolamanız gerektiğidir.
Bir proje geliştirirken şu üç soruyu sormanız gerekir:
- Şirketin hangi verileri saklaması gerekiyor?
- Şirketin hangi hassas verileri şifrelemesi gerekiyor?
- Herhangi bir nedenle veriler tehlikeye girerse, şirkete ne kadar zarar verebilir?
Ne kadar hassas veri saklarsanız, maruz kalma riski o kadar büyük olur. Hassas verileri saklamanız gerekiyorsa, erişimi zorlaştıracak şekilde şifrelemeniz gerekir.
2. Rol yönetimi ve erişim kontrolünü uygulayın
Bir web sitesi, eklenti veya tema tasarlarken kullanıcılara mümkün olan en düşük ayrıcalıkları vermek önemlidir.
Ayrıcalıklar, kullanıcının yalnızca ihtiyaç duyduğu şeyi alması ve diğer alanlara erişememesi için sınırlandırılmalıdır.
Örneğin, katkıda bulunanlar yeni gönderiler ve sayfalar oluşturabilecek, ancak bunları yayınlamayacak şekilde sınırlandırılmalıdır. Editörler yeni gönderiler oluşturabilmeli ve bunları yayınlayabilmeli, ancak tasarımı veya eklentileri değiştirememelidir.
Benzer şekilde, eklentinizde veya temanızda kısıtlamak istediğiniz belirli bir işlevi geliştirirken, kurulum sırasında yeni WordPress kullanıcı rolleri oluşturduğunuzdan emin olun. Yöneticileri bunlardan haberdar edin, böylece geliştirmekte olduğunuz eklentiyi veya temayı kullanacak olan ilgili kullanıcılara doğru roller atanır.
İşte yapının nasıl göründüğünün hızlı bir resimli temsili.
Bu yaklaşım, sorunları en aza indirir, çünkü bir davetsiz misafirin ne kadar zarar verebileceğini sınırlayabiliriz. Ayrıca, bir web sitesinin gerçekten olmaması gereken alanlarında dolaşan meraklı bir kullanıcının hata veya hatalarından kaynaklanan zararı da sınırlayabilirsiniz.
Ayrıca, rollerine bağlı olarak geliştirme ekibi içinde erişimi kısıtlamanız gerekir.
3. Kimlik doğrulama uygulayın
Web sitesi kimlik doğrulaması, kullanıcıların bir web sitesinin kısıtlı alanlarına erişim elde etmek için kimliklerini doğrulamalarına izin veren güvenlik sürecidir.
Bir tema veya eklenti geliştirirken, bazı veriler kullanıcılar tarafından görülebilirken, kısıtlanması gereken belirli verilere sahip olacaksınız. Bu nedenle, kısıtlanmış verilere erişen kullanıcının kimliğinin doğrulanıp doğrulanmadığını ve doğru kullanıcı rolüne sahip olup olmadığını doğrulamak için koda kontroller eklemeniz önemlidir.
Benzer şekilde, bir web sitesi oluştururken, kullanıcı verilerini korumak için güçlü parola zorlama ve çok faktörlü kimlik doğrulama gibi etkili hesap yönetimi uygulamalarını uygulayabilirsiniz.
İki faktörlü kimlik doğrulama, kimlik doğrulamayı uygulamanın en popüler yollarından biridir.
İki faktörlü kimlik doğrulama(2FA), sitenize giriş yapmak için web sitenizin şifresi dışında ek bir koda veya bir kerelik şifreye (OTP) ihtiyaç duyduğunuz iki adımlı bir işlemdir. Bu OTP genellikle kısa mesaj, telefon görüşmesi veya Google Authenticator, Authy, Duo Security ve daha pek çok tanınmış 2FA uygulaması aracılığıyla başka bir cihaza gönderilir. 2FA'yı uygulamak sizi kaba kuvvet saldırılarından korur.
Web sitenizi WordPress'te oluşturuyorsanız, web sitenizin güvenliğini sağlamanıza izin veren bu inanılmaz araçlara göz atın.
- Giriş Denemelerini Sınırla: Bu araç, giriş denemelerinin sayısını sınırlayarak sizi kaba kuvvet saldırılarından korur. Ayrıca, istenmeyen posta önleme ve otomatik olarak etkin olmayan kullanıcı oturum kapatma içerir.
- WP2 FA: WP2FA eklentisi, web sitenize anında iki faktörlü kimlik doğrulama eklemenize olanak tanır. Ayrıca Google Authenticator, Authy, FreeOTP, Duo Security ve diğerleri gibi birden fazla 2FA uygulamasını da destekler.
- Shield Security: Bu eklenti Google Authenticator ve SMS 2FA gibi 2FA uygulamalarını desteklemez ancak YubiKey kullananlar için faydalıdır.
- WPassword: Bu eklenti, WordPress web siteniz için güçlü parolalar uygulamanıza, çok sayıda başarısız oturum açma girişimi olan kullanıcıları engellemenize ve daha pek çok şeye yardımcı olur. WooCommerce ve diğer üçüncü taraf eklentilerle sorunsuz bir şekilde bütünleşir.
4. Temanızı veya eklentinizi yayınlamadan önce kontrol edin
Bir tema veya eklenti yayınlanmadan önce kodunuzun olabildiğince hatasız olduğundan emin olmanız gerekir. Kodunuzdaki herhangi bir güvenlik açığını algılamak için belirli oluşturucu bağımlılıklarını kullanabilirsiniz.
WordPress web siteleri için önerilen bağımlılıklardan bazıları şunlardır:
- Wpthemereview
- Wp kodlama standartları
Bu kodlama standartlarında, verileri yazdırmadan önce her zaman kaçmak, tüm istekler için nonce kullanmak, istek verilerini kullanmadan önce sterilize etmek, uygun kullanıcı izinlerini sağlamak ve kodunuzun güvenliğini sağlamaya yardımcı olmak için daha fazlası gibi katı kodlama kuralları vardır.
Kendi temanızı veya eklentinizi geliştiriyorsanız bu araçlar harikadır.
Ayrıca WPScan Güvenlik Tarayıcısını da kontrol etmelisiniz. Web sitenizi herhangi bir güvenlik açığına karşı kontrol eden harika bir çevrimiçi web sitesi güvenlik tarayıcısıdır.
5. Belirli PHP İşlevlerinden Kaçının
eval() ve unserialize() gibi belirli PHP işlevleri, sistem verilerini açığa çıkarabilir ve sunucunun kapatılmasına veya bilgisayar korsanının tüm sunucu bilgilerine erişmesine neden olabilecek sunucu verilerinin açığa çıkmasına neden olabilir.
Mümkün olduğunda kaçınmanız gereken bazı PHP işlevleri şunlardır:
eval() : eval, isteğe bağlı PHP kodunu çalıştırabilir. Doğru kullanılmadığı takdirde kodlarınızı enjeksiyon saldırılarına maruz bırakabilir.
serialize() veya unserialize(): Kullanıcı tarafından sağlanan girdiyle serialize() veya unserialize() kullanmayın. Saldırganlar bu işlevlerden yararlanabilir. Rastgele kod çalıştırmak için serileştirilmiş bir isteğe bağlı nesne içeren bir dize iletebilirler.
md5() : İnternet, md5() şifreleme zayıflıkları hakkında incelemelerle dolu 1 ve güvensiz olarak kabul edilir. SHA-2 gibi daha iyi bir karma işlevi kullanın.
sha1() : sha1(), karma algoritmalarının hızlı doğası nedeniyle kullanılmaması gereken başka bir karma işlevidir. Herhangi bir modern çerçevede md5() yerine SHA-2 karma algoritmasının kullanılması önerilir.
6. Koddaki sorunları bulmak için linterleri kullanın
Lint aracı, kaynak kodunuzu programatik ve biçimsel hatalar için kontrol eden temel bir statik kod çözümleyicisidir. Linter'in çıkış sesi, projenin ilerlemesini sağlamak için dostane olmalıdır.
Lint kodları, bir web sitesi veya uygulama geliştirirken olası güvenlik açıklarını bulmanın ve hataları azaltmanın harika bir yoludur. PHP, JS ve HTML geliştirme için belirli güvenlik linterlerini kullanabilirsiniz.
PHP kodlarınızın statik analizi için bazı önemli araçlar şunlardır:
- PHP-Paralel-Lint
- SonarLint
- mezmur
- PHP Lint
SonarLint'i HTML ve Javascript linting için de kullanabilirsiniz.
Dikkate değer diğer JS linterleri:
- JS Lint
- ES Lint
7. Kullanılmayan kodu ve eklentileri kaldırın
Gittikçe daha karmaşık yazılımlarla, koddaki güvenlik açıkları potansiyeli de artar. WordPress temaları ve eklentileri farklı değildir. HTML5, CSS ve JavaScript gibi kodların sürekli artan özellikleri, geliştiricilerin zengin web uygulamaları oluşturmasını sağlar.
Bununla birlikte, uygulamaların artan karmaşıklığı iki ucu keskin bir kılıçtır. Kullanıcıların beklediği özellikleri sağlamaya yardımcı olurken, uygulamanın saldırı yüzeyini de genişletirler. Bu güvenlik açığıyla başa çıkmanın bir yolu, kullanılmayan kodu kaldırmaktır.
Farklı kullanıcılar, bir web sitesindeki veya bir web uygulamasındaki tüm özelliklere ihtiyaç duymayabilir. Her dağıtımda kullanıcı gereksinimlerine göre gereksiz özellikleri kaldırarak saldırı yüzeylerini ve ilişkili riski azaltabilirsiniz.
WordPress'te web siteleri geliştirmeyi seviyorsanız, kod açısından hafifken ihtiyaçlarınızı karşılayan temalar ve eklentiler ile gitmenizi öneririz. Yalnızca web sitenizi güvende tutmakla kalmaz, aynı zamanda arama motoru optimizasyonuna da yardımcı olurlar. İşte mevcut en iyi hafif ve en hızlı WordPress temalarından bazıları.
8. Sunucu tarafı ve istemci tarafı doğrulamasını kullanın
Özel kodlar yazmayı seven biriyseniz, hem istemci tarafı hem de sunucu tarafı doğrulamasını kullanmak çok önemlidir. İstemci tarafı doğrulama, kullanıcının yanlış veri girme veya alanları unutma gibi yaygın hatalar yapmasına karşı korumaya yardımcı olur. Bu doğrulama, geçersiz verileri sunucuya ulaşmadan yakalayarak zamandan ve paradan tasarruf sağlar.
İstemci tarafı doğrulama yalnızca sunucuya gidiş dönüş başarısız olduktan sonra gerçekleşirse, kullanıcılara hatalarını hemen düzeltmelerine izin vermeden neyi yanlış yaptıklarını söyleyen gecikmelerle karşılaşacağınızı hayal edin.
Ancak, istemci tarafı doğrulama tek başına bir güvenlik önlemi olarak yeterli değildir. Ayrıca sunucu tarafı doğrulamasını kullanmanız gerekir. Sunucu tarafı doğrulama, sizi kötü niyetli girdilerden ve diğer saldırı vektörlerinden korur.
9. Herhangi bir kullanıcı girdisini sterilize edin ve veri talep edin
Kullanıcı Girişi Temizleme, sisteme zararlı kodun enjekte edilmesini önlemek için kullanıcılardan ve API'lerden gelen yetkisiz veya istenmeyen karakter ve dizilerdeki verileri denetleme, temizleme ve filtrelemeye yönelik bir siber güvenlik önlemidir.
Bilgisayar korsanları, belirli komutları enjekte edebilir ve web sitenizin güvenliğini tehlikeye atabilecek eylemler gerçekleştirebilir. Giriş temizleme, veri bütünlüğünün korunmasına yardımcı olur ve sistem güvenliğini artırır.
10. Kalıcı düzeltmeler uygulayın
Güvenlik kontrolü yaparken, zaman zaman tekrar ortaya çıkan bazı güvenlik açıkları fark edebilirsiniz. Kısmi bir yama eklemek yerine bunları kalıcı olarak ortadan kaldırabilmek için yeni güvenlik açıklarının temel nedenini belirlemeniz gerekir.
Örneğin, geliştirdiğiniz tema veya eklentide SQL/XSS sorunlarıyla çok sık karşılaşabilirsiniz. Böyle bir durumda, her giriş için bir temizleme kontrolü oluşturmak yerine, bir işlev/sınıf oluşturun ve kullanıcı girişi olduğunda tüm verilerin bu sınıf/işlevden geçirilmesi gerektiğini bir politika haline getirin.
11. Güvenlik yanlış yapılandırmalarından ve varsayılanlarından kaçının
Güvenlik yanlış yapılandırmaları, güvenlik ayarları tanımlanmadığında ve uygulanmadığında ve varsayılan değerler korunduğunda meydana gelir. Güvenlik kontrollerini uygulamamak veya bunları hatalarla uygulamak, oluşturduğunuz tema, eklenti veya web sitesinde güvenlik açıkları olma olasılığını artırabilir.
Yanlış yapılandırma genellikle bir sistem, veritabanı yöneticisi veya geliştiricinin bir uygulamanın çerçevesini doğru bir şekilde yapılandırmaması nedeniyle olur ve bu da bilgisayar korsanları için tehlikeli açık yollara yol açar.
Varsayılan kurulumun güvenli olduğundan ve parolaları (gerekirse) otomatik olarak ayarlamadığından emin olun. Örneğin, eklenti, kullanıcıların dosya yükleyebileceği bir dizin kullanıyorsa, her zaman kullanıcılardan parolalarını ve dizin yolunu belirlemelerini isteyin.
12. Kendinizi bilgilendirin ve güncel tutun
Siber güvenlik sürekli gelişen bir alandır. Gelişmelere ayak uydurabilmeniz ve kodunuza yönelik yeni ve ortaya çıkan tehditleri azaltabilmeniz için en son güvenlik güncellemelerinin ve ortaya çıkan risklerin farkında olmanız gerekir.
Bir geliştirici olarak, kendinizi haberlerden haberdar etmenize ve daha güvenli kodlar yazmanıza, kodlamayı güvenli hale getirmek, kodu daha iyi temizlemek ve kullanıcı girdilerini daha iyi işlemek için en iyi uygulamalar nelerdir?
Bunu yapmak için çevrimiçi olarak uzmanları takip edin ve favori web geliştirme blogunuzla güncel kalın. Bunu zaten okuyorsunuz. Yani iyi bir başlangıç yaptınız.
İşte WordPress Güvenliği ile ilgili en iyi kaynaklardan bazıları.
- WP Beyaz Güvenlik blogu
- WordFence blogu
- Sucuri günlüğü
13. Kodu koruyun
Bugün yazdığınız kod yarın güvenli olmayabilir. Yeni güvenlik açığı varyantları gelmeye devam ediyor ve bir geliştirici tarafından da sürekli yükseltmelere ihtiyaç duyuyor.
Bir eklentiye veya temaya yeni işlevler eklerken, bunun diğer modüllerin veya sınıfların veya koddaki işlevlerin güvenliğini etkilemediğini kontrol edin. Bunu yapmaları durumunda, sorunları gidermek için kodu güncellemeniz gerekir.
Temanızın veya eklentinizin kodunu korumak için GitHub gibi araçları da kullanabilirsiniz. Kodu izlemenize ve sorunları daha hızlı çözmenize yardımcı olur. Güvenlik her zaman gelişir. En son trendlere ayak uydurmak için, güvenlik açıklarını bulabilmeniz ve geliştirebilmeniz için güvenlik testlerinizi sürekli olarak yenilemeniz önemlidir.
14. Yazılım paketlerinizi düzenli olarak güncelleyin
Akıl almaz bir şey.
PHP, Javascript, HTML ve diğerleri gibi yazılım paketlerinizi güncel tutmak, yeni güvenlik sorunlarının çözülmesine yardımcı olur. Yazılım güvenliğini geliştirmek her zaman devam eden bir endişedir ve bu amaçla, bu tür yazılımların en son sürümlerini her zaman güncel tutarız.
15. Ekibinizle işbirliği yapın
Destek ekibinize gönderilen güvenlik biletlerine dikkat edin. Müşterileriniz herhangi bir güvenlik sorunu bildirirse, bunları ele almayı bir öncelik haline getirin. Son kullanıcınız işinizle ilgili en iyi geri bildirimi verir, bu yüzden onu iyi kullanın!
Güvenlik sorunlarını geliştirme ekibiyle tartışın ve geliştirdiğiniz herhangi bir yamanın güvenlik sorununu çözdüğünden ve herkese açık hale getirmeden önce başka hiçbir şeyi bozmayacağından emin olun. Ekip arkadaşlarınızla sık sık işbirliği yapmanız veya tüm departmanların desteğe dahil olduğu büyük müşterilerle çalışmanız gerekiyorsa, süreci kolaylaştırmak için web semineri yazılımı kullanmak iyi bir fikirdir.
16. Kendinizi en kötü senaryoya hazırlayın
Çok dikkatli olamazsın. Web ve web'de yayınlanan herhangi bir şey asla %100 güvenli olamaz. Ancak, riskleri azaltmaya yardımcı olabilecek adımlar atabilirsiniz.
Anahtar, potansiyel güvenlik açıklarını değerlendirmek ve yeterli güvenlik önlemleriyle uygun bir risk yanıtı geliştirmektir. Yeni saldırı teknikleri sıklıkla ortaya çıkar, bu nedenle en iyi uygulamaların da bu sürecin bir parçası olarak gelişmesi gerekir.
Örneğin, bir WordPress web sitesi saldırıya uğradıysa, acil durum planı, bir saldırı durumunda ne yapılması gerektiğini içermelidir. Bunun yedekleme yöntemlerini, temizleme sürecini ve web sitesini yeniden oluşturmak ve hizmeti geri yüklemek için gereken adımları içermesi gerekir.
Böyle bir plan, tüm paydaşların aşırı bilgi yükü altında ezilmeden veya gereksiz eylemlerle aşırı tepki göstermeden işleri hızlı bir şekilde düzeltmesini sağlayacaktır.
Son düşünceler
Temanızın veya eklentinizin güvenliğini artırmak için başka ne yapabilirsiniz? Pek çok şey. Görüyorsunuz, güvenli kod yazmak tek seferlik bir şey değil. Teknolojiler gelişir ve saldırı yöntemleri onunla birlikte gelişir.
Gerçek şu ki, tüm siber saldırıları önleyemez veya akla gelebilecek her riski azaltamazsınız. Amacınız, elinizdekilerle yapabildiğiniz kadarını yapmak ve onu geliştirmek için kodunuzu sürekli olarak gözden geçirmek olmalıdır.
Web siteniz için iyi tanımlanmış bir güvenlik planı oluşturun ve en kötüsüyle yüzleşmeye hazır olun. Güvenlikle ilgili biletleri veya raporları en yüksek öncelik olarak aldığınızdan emin olun.
Topluluğunuzda bir güvenlik düzeltmesi yayınladığınıza dair bir blog gönderisi veya duyuru yayınlayın, böylece tüm kullanıcılarınız güncelleyebilir ve web sitelerinin güvenliğinin ihlal edilmesini önleyebilir.
Siber güvenlik, askeri bir stratejiden çok farklı değildir. Anahtar hazırlıktır! Umarım, bu yazı hazırlığınıza yardımcı olmuştur. Web sitenizin güvenliğini artırmak için ne gibi önlemler aldığınızı yorumlarda bize bildirin.
Bu makalede kullanılan referanslar
↑ 1 | https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C |
---|