it-swarm-tr.com

Güvenli Joomla uzantısı nasıl geliştirilir?

İlk uzantımı yazmadan önce, onu mümkün olduğunca dokunulmaz olarak nasıl tasarlayacağımı anlamak istiyorum.

Güvenli Joomla uzantısı yazmak için bir dizi kural var mı?

Ben sadece SQL enjeksiyon olabildiğince tehdit hayal edebiliyorum, böylece form girişi asla doğrudan 'SQL' komutuna eklenemez biliyorum.

Özel modül veya eklenti yazarken dikkat etmem gereken diğer saldırı vektörleri nelerdir?

7
miroxlav

Belirttiğiniz ana şeylerden biri SQL Injection'dır. Bu gördüğüm birkaç kişinin tamamen kaçırdığı ve non Joomla kodlama standartlarını kullanarak geliştirmeye başladığı ve mysql_* komutları.

Her zaman Joomla kodlama standartlarına bağlı olan ilk noktada bahsettiğim ikinci şey. Yapmamanız gereken tek zaman Joomla'nın bir alternatif sunmadığı zamandır.

Üçüncüsü, uzantınız bir klasör veya dosya oluşturursa, onlara doğru izinleri verdiğinizden ve chmod 777 klasörünü yapmaya başlamadığınızdan emin olun. ve geçici olarak JED'den kaldırıldı.

Her zaman formlu jetonlar kullanın. Bu, diğer sitelerden izinsiz saldırı yapılmamasını sağlar. Bununla ilgili daha fazla bilgi için aşağıdakilere göz atın:

http://docs.joomla.org/How_to_add_CSRF_anti-spoofing_to_forms

Zaten bazı testler yürüttüğünüzden emin değilseniz, kodunuzu kontrol etmek isteyen biri olabileceği için Kod İnceleme Stackexchange ile gelmeye çalışın.

Yapabileceğiniz bir şey, güvenli olmadığı için Joomla Uzantıları Dizini'nden geçici olarak (düzeltilinceye kadar) kaldırılan uzantıları görmek için Güvenlik Açılabilir Uzantılar Listesi konusuna bakmaktır.

Umarım bu size ilk uzantınızda biraz fikir verir ve iyi şanslar sunar

8
Lodder

Resmi belgeleri izleyerek, Güvenli kodlama yönergeleri konusunda bazı adımlar.

  • İstekten aldığınız tüm verileri doğrulayın (POST, GET, COOKIES vb.). Kullanıcıya güvenmeyin ve olabildiğince katı olun. Bir integer bekliyorsanız, string öğesinin kabul edilmesine izin vermeyin.

  • Dosya yüklemeleri - mümkün olduğunda herkese açık web sayfalarında dosya kabul etmekten kaçının. Dosya meta bilgilerini doğrulamanız ve olası tüm kontrolleri yapmanız gerekiyorsa.

  • SQL sorguları oluşturma - SQL enjeksiyonlarının nasıl çalıştığını ve aynı zamanda veritabanı hatalarını nasıl ele aldığınızı anlayın. Ne kadar çok hata görüntülerseniz veritabanı yapınız hakkında o kadar fazla bilgi verirsiniz. İdeal olarak hataları günlüğe kaydedersiniz ancak görüntülemezsiniz.

  • Bir belirteç kullanarak formları güvenli hale getirin

7
Valentin Despa

Çoğu uzantı için çoğunlukla güvenlidir, Ancak dosyaları kaydetmek/düzenlemek için gerekli olabilecek herhangi bir şey konusunda çok dikkatli olun, yanlış filtreleme veya doğrulama bir giriş noktası oluşturabilir.

JDatabase'in API'sini doğru kullandığınız sürece sql enjeksiyonundan da güvenli olmalısınız. com_content veya plg_system_loadpositon Joomla kurulumunda çeşitli Joomla API'lerinin bazı daha ince noktalarını bulmaya yardımcı olmak için (dokümantasyonu takip etmek biraz zor olduğu için).

Ayrıca başarısız olduklarında ve bir çeşit güvenlik açığı kullanıldığında API'leri kullanarak, düzeltme muhtemelen bir çekirdek güncelleme haline gelecektir (JDatabase'i, keşfi ise saat içinde bir Joomla sürümü hayal edebilirim: D) ekleyin.

Bu açık kaynakların en büyük kusurlarından biri, zarar vermek isteyen herkesin bunu yapmak için gereken tüm bilgilere sahip olmasıdır. Kapalı bir uzantı ise (herkese açık değil), hiçbir zaman bir sorun olmayacaktır.

Son olarak, uzantı ne kadar basitse (daha az kod), 'dokunulmaz' olma olasılığı o kadar yüksektir. Bir uzantı büyüdükçe, bir giriş noktası oluşturmak için küçük bir hata meydana gelebilecek daha çok yer var.

4
Jordan Ramstad