Aramam gereken ortak güvenlik kusurları nelerdir? [kapalı]


16

Bir özenti WP eklentisi geliştiricisi olarak, aramam gereken ana güvenlik kusurları / delikleri nelerdir?

Ben bir yapılandırma paneli ile yeni bir eklenti oluşturmak üzereyim (yani giriş alanları ve şeyler). Ne hakkında endişelenmeliyim?

Örneğin, veri sanitasyonu / wp-admin / alanında olduğundan bu kadar önemli mi? Kötü niyetli biri doğrudan eklenti sayfamı ziyaret edip POST istekleri veya benzeri bir şey gönderebilir mi?

Teşekkür ederim!

Yanıtlar:


16

Temaları incelemek için kullanılan geçerli (devam eden çalışma) ayarları / veri güvenliği kontrol listemize dayalı olarak değiştirilmiş bir kontrol listesi (ilkeler, Eklentiler için Temalar için olduğundan farklı olmamalıdır):

  1. Eklentiler, tüm seçeneklerin, özel işlevlerin, özel değişkenlerin ve plugin-slug ile özel sabitlerin önüne gelmelidir.

  2. Eklentiler, aşağıdaki gibi güncel olmayan ve uygun veri güvenliği içermeyen web sitesi eğiticilerinden kopyala ve yapıştır komut dosyalarına güvenmek yerine Eklenti Seçenekleri ve Eklenti Ayarları sayfalarını kasıtlı olarak uygulamalıdır:

  3. Eklentiler, üst düzey bir menü eklemek yerine add_options_page(), Eklenti Ayarları Sayfasını Settingsmenüye eklemek için bu işlevi kullanmalıdır add_menu_page().

  4. Eklentiler , ayarlar sayfasını ekleme yeteneği için uygun bir yetenek (ör. manage_options) Kullanmalıdır.

  5. Eklentiler, ayarlar sayfası için birden çok seçenek oluşturmak yerine seçenekleri tek bir dizide kaydetmelidir. Ayarlar API'sının kullanımı (aşağıya bakın) bunu halledecektir.

  6. Eklentiler, doğrudan $_POSTve $_REQUESTverileri kullanmak yerine form giriş verilerini almak ve kaydetmek için Ayarlar API'sını (aşağıya bakın) kullanmalıdır .

  7. Onay kutuları basıp seçenekler için, Eklentileri kullanmalıdır checked()ve selected()çıkışı için fonksiyonlar checked="checked"ve selected="selected"sırasıyla.

  8. Eklentiler, veritabanına veri girmeden önce güvenilir olmayan tüm verileri doğrulamalı ve sterilize etmeli ve Ayarlar form alanlarına çıkmadan önce ve Tema şablonu dosyalarında çıkmadan önce güvenilir olmayan tüm verilerden kaçmalıdır:

  9. Eklentiler esc_attr()metin girişleri için ve esc_html()(veya esc_textarea()WP 3.1'de) textareas için kullanılmalıdır.

  10. Eklentiler, Ayarlar API'sı kullanılmıyorsa açıkça Ayarlar sayfası nonce denetimi sağlamalıdır:

  11. Eklentilerin, kullanımı daha kolay, daha güvenli ve ayar sayfalarının çok çalışmasını sağlayan Ayarlar API'sını kullanması da şiddetle tavsiye edilir:

Ayarlar API'sını kullanma hakkında iyi bir eğitim için bkz:

Güvenli ve sağlam kodlanmış bir tema ayarları sayfasına sahip bir temaya göz atmak istiyorsanız, şu temaya göz atın:
http://wordpress.org/extend/themes/coraline


Ve eklemeliyim: kimse listede eksik bir şey görürse, Temalar için güvenlik incelemesini iyileştirmek için kontrol listesine ekleyebilmem için lütfen yorum yapın !
Chip Bennett

Vay canına, harika bir liste, teşekkürler. Bu soruyu bir topluluk wiki'si haline getirmeye ve bu noktaların her birini kendi tartışmalarına ve ayrıntılarına daha iyi izin vermek için kendi cevapları haline getirmeye değer mi acaba?
goldenapples

Bununla iyi olurdum, ancak orijinal posterin sorusunu ele geçirmek istemiyorum (StackExchange'te işler böyle yapılmadıkça? Burada hala yeniyim ...).
Chip Bennett

Ben de bilmiyorum ... bunu moderatörlerin takdirine bırakıyorum. Bu, çok önemli ve en iyi uygulamaları hala çalıştığı için harika bir wiki sorusu yapacak gibi görünüyor. @Rarst?
goldenapples

Gerekirse yeni bir Soru oluşturabilir miyim?
Chip Bennett

11

Bunun iki yönü vardır:

  1. Temel prensipler.

    • Veritabanına yazılan her şey SQL nesneleri için kontrol edilmelidir.
    • Ekrana yazdırılan her şeyin zararlı JavaScript yazdırmadığından emin olunmalıdır.
    • Birisi bir şey yaptığında, bunun niyetinin olduğunu ve uygun kabiliyeti olduğunu kontrol etmek gerekir.
    • Siz ya da benim hiç kontrol etmeyi düşünmeyeceğiniz çok daha fazla şey var.
  2. Özellikleri.

    • Modern WordPress güvenliği ciddiye alır ve geliştiriciler için kolaylaştırmayı hedefler.
    • Dolayısıyla, yapmak istediğiniz çoğu şey için WP API'leri ile bunu yapmanın bir yolu vardır.
    • Dolayısıyla, ilk adımınız ne yaparsanız yapın, uygun API'yı incelemek ve incelemek olacaktır.
    • Ortak ve basit işlevlerden ne kadar uzak olursanız, çalışmak ve uygulamak için o kadar karmaşık şeyler gerekir.

1
  1. defined('ABSPATH') or die('Access denied');WordPress tarafından kullanılan her eklentinin komut dosyasına doğrudan ekleyin
  2. Her dizine boş index.php dosyası ekleyin
  3. Belirli eklentilerin dosyalarına doğrudan erişimi önlemek için gerekli talimatları içeren eklenti dizinine .htaccess ekleyin.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.