Nedir? Nasıl?

WordPress Nonce Nedir? Form İşlemlerini Nasıl Korur?

WordPress sitelerinde formlar, yönetim paneli işlemleri ve AJAX istekleri üzerinden veri ekleme, güncelleme veya silme gibi eylemler gerçekleştirilebilir. Bu işlemler yalnızca yetkili kullanıcılar tarafından başlatılmalıdır. Aksi hâlde kullanıcının açık oturumundan yararlanan kötü amaçlı istekler site üzerinde istenmeyen değişikliklere neden olabilir. WordPress nonce sistemi, isteğin güvenilir bir sayfadan gönderildiğini doğrulamaya yardımcı olarak bu riski azaltır. Bu rehberde WordPress nonce nedir, nasıl oluşturulur ve form işlemlerini nasıl korur sorularını ele alıyoruz.

WordPress Nonce Nedir?

WordPress nonce, belirli bir kullanıcı, oturum, işlem ve zaman aralığı için oluşturulan güvenlik değeridir. Bir form gönderildiğinde veya yönetim işlemi başlatıldığında isteğe eklenerek kaynağın doğrulanmasına yardımcı olur.

Nonce kelimesi “number used once” ifadesinden gelir. Ancak WordPress nonce değerleri teknik olarak yalnızca bir defa kullanılmaz. Geçerlilik süresi boyunca aynı değer birden fazla istekte kullanılabilir. Bu nedenle nonce, tek kullanımlık parola olarak değerlendirilmemelidir.

WordPress bu değeri kullanıcı oturumu, işlem adı ve zaman bilgisi gibi verilerden yararlanarak üretir. Saldırganın yalnızca form adresini ve parametrelerini bilmesi geçerli bir istek hazırlaması için yeterli olmaz.

WordPress Nonce Neden Kullanılır?

WordPress nonce sisteminin temel amacı, Siteler Arası İstek Sahteciliği olarak bilinen CSRF saldırılarına karşı koruma sağlamaktır. Bu saldırılarda oturumu açık bir kullanıcının tarayıcısı, bilgisi dışında hedef siteye istek göndermek için kullanılabilir.

Örneğin yönetici domainadresiniz.com üzerinde oturum açmışken kötü amaçlı bir sayfayı ziyaret edebilir. Bu sayfa, eklenti ayarlarını değiştiren veya bir kaydı silen gizli bir istek göndermeye çalışabilir. Tarayıcı oturum çerezini otomatik olarak ilettiğinde WordPress isteği yönetici hesabından gönderilmiş gibi algılayabilir.

İşlem nonce doğrulaması gerektiriyorsa saldırganın geçerli güvenlik değerini de göndermesi gerekir. Bu değere erişemeyen sahte istek reddedilir ve kritik işlemin gerçekleştirilmesi önlenir.

WordPress Nonce Nasıl Çalışır?

Nonce koruması oluşturma, isteğe ekleme ve doğrulama aşamalarından meydana gelir. Öncelikle yapılacak işlemi tanımlayan benzersiz bir eylem adı belirlenir. WordPress bu eylem adına ve mevcut kullanıcı oturumuna bağlı bir değer üretir.

Oluşturulan nonce form içerisine gizli alan olarak yerleştirilebilir:

<form method="post">
    <?php wp_nonce_field( 'profil_guncelle', 'profil_nonce' ); ?>
    <input type="text" name="telefon">
    <button type="submit">Güncelle</button>
</form>

Form gönderildiğinde profil_nonce alanı da sunucuya iletilir. İşlemi karşılayan PHP kodu, gelen değerin doğru eylem için oluşturulup oluşturulmadığını kontrol eder:

if (
    ! isset( $_POST['profil_nonce'] ) ||
    ! wp_verify_nonce( $_POST['profil_nonce'], 'profil_guncelle' )
) {
    wp_die( 'Güvenlik doğrulaması başarısız.' );
}

Doğrulama başarılı olduğunda işlem diğer güvenlik kontrollerinin ardından sürdürülebilir. Değer eksik, hatalı veya geçerlilik süresini aşmışsa istek işlenmemelidir.

Yönetim Formlarında Nonce Nasıl Doğrulanır?

WordPress yönetim panelinde gerçekleştirilen form işlemleri için check_admin_referer() fonksiyonu kullanılabilir. Bu fonksiyon nonce değerini kontrol eder ve doğrulama başarısız olduğunda işlemi durdurur.

Örnek kullanım şöyledir:

check_admin_referer( 'ayar_kaydet', 'ayar_nonce' );

Fonksiyonda kullanılan işlem adı, nonce oluşturulurken belirtilen adla aynı olmalıdır. Farklı veya genel ifadeler kullanmak kodun yönetimini zorlaştırabilir. Her önemli işlem için açık ve benzersiz bir eylem adı belirlenmesi daha güvenli bir yapı oluşturur.

Silme, güncelleme ve ayar kaydetme gibi farklı işlemlerin aynı nonce değerine bağlanmaması gerekir. Böylece bir işlem için oluşturulan değer başka bir amaçla kullanılamaz.

AJAX İşlemlerinde WordPress Nonce Nasıl Kullanılır?

WordPress AJAX isteklerinde nonce değeri JavaScript koduna aktarılabilir ve istek verileriyle birlikte sunucuya gönderilebilir. Sunucu tarafında doğrulama için check_ajax_referer() fonksiyonundan yararlanılır.

check_ajax_referer( 'veri_kaydet', 'security' );

İstemci tarafından gönderilen security alanındaki değer geçerliyse AJAX işlemi devam eder. Kontrol başarısız olduğunda veri tabanı üzerinde değişiklik yapılmamalı ve uygun bir hata yanıtı döndürülmelidir.

Nonce değerinin JavaScript içerisinde bulunması onu parola hâline getirmez. Değer, sayfayı görüntüleme yetkisi bulunan kullanıcıya sunulur ve yalnızca isteğin beklenen kaynaktan geldiğini doğrulamaya yardımcı olur.

WordPress Nonce Ne Kadar Süre Geçerlidir?

WordPress nonce değerleri kalıcı değildir. Varsayılan yapılandırmada belirli zaman aralıklarına göre oluşturulur ve genellikle 12 ila 24 saat arasında geçerliliğini koruyabilir. Değerin kalan süresi, oluşturulduğu zaman dilimine bağlı olarak değişebilir.

Uzun süre açık bırakılan bir form gönderildiğinde nonce süresi dolmuş olabilir. Bu durumda kullanıcıya formu yenilemesi gerektiğini bildiren anlaşılır bir hata gösterilebilir.

Nonce süresini gereksiz şekilde uzatmak güvenlik açısından tavsiye edilmez. Çok kısa süreler ise kullanıcıların form gönderirken sık sık doğrulama hatası yaşamasına yol açabilir. Projenin işlem yapısı ve kullanım süresi birlikte değerlendirilmelidir.

Nonce Kullanmak Tek Başına Yeterli midir?

Nonce doğrulaması, kullanıcının işlemi gerçekleştirme yetkisine sahip olduğunu göstermez. Yalnızca isteğin beklenen WordPress oturumu ve işlem bağlamıyla ilişkili olduğunu kontrol eder. Bu nedenle yetkilendirme ayrıca yapılmalıdır.

Örneğin yalnızca yönetici tarafından değiştirilebilecek bir ayar için şu kontrol uygulanabilir:

if ( ! current_user_can( 'manage_options' ) ) {
    wp_die( 'Bu işlem için yetkiniz bulunmuyor.' );
}

Form verileri kaydedilmeden önce girişler temizlenmeli ve doğrulanmalıdır. Ekrana yazdırılan değerler uygun kaçış fonksiyonlarıyla işlenmelidir. Nonce; kullanıcı yetkisi kontrolünün, veri doğrulamanın veya güvenli kodlama uygulamalarının yerine geçmez.

WordPress Nonce Kullanımında Yapılan Hatalar Nelerdir?

En yaygın hatalardan biri nonce değerini forma ekleyip sunucu tarafında doğrulamamaktır. Görünürde bir güvenlik alanı bulunsa da kontrol edilmeyen değer herhangi bir koruma sağlamaz.

Farklı işlemlerde aynı eylem adının kullanılması, doğrulamanın yalnızca istemci tarafında yapılması ve nonce değerinin yetkilendirme yöntemi olarak görülmesi diğer önemli hatalardır. Ayrıca hassas veriler nonce içerisine yerleştirilmemelidir.

Özel tema ve eklenti geliştirirken veri değiştiren bütün form, bağlantı ve AJAX işlemleri incelenmelidir. Korumasız kalan tek bir işlem noktası bile kullanıcı oturumunun kötüye kullanılmasına neden olabilir.

Sonuç

WordPress nonce, form ve AJAX isteklerinin güvenilir bir işlem bağlamından gönderildiğini doğrulamaya yardımcı olan önemli bir güvenlik mekanizmasıdır. Doğru eylem adıyla oluşturulması, sunucu tarafında kontrol edilmesi ve kullanıcı yetkileriyle birlikte uygulanması gerekir. Veri temizleme, çıktı güvenliği ve oturum kontrolleri de bu yapının tamamlayıcı parçalarıdır.

Domainhizmetleri olarak hızlı, güvenli ve stabil hosting altyapımızla WordPress projelerinize uygun çözümler sunuyoruz. Güvenlik katmanlarıyla desteklenen WordPress Hosting hizmetlerimizden yararlanarak web sitenizin daha güvenli ve kararlı bir ortamda yayınlanmasını sağlayabilirsiniz.

Subscribe
Bildir
guest
0 Yorum
En Yeniler Eskiler