Yapay Zeka Kod Asistanlarıyla WordPress Tema ve Eklenti Geliştirme: Güvenlik ve Kalite Rehberi

Yapay zeka kod asistanları, WordPress geliştiricilerinin günlük işlerini ciddi biçimde hızlandırdı. Özel bir yazı türü kaydetmek, bir WooCommerce kancası yazmak, bir yönetim paneli ayar sayfası oluşturmak ya da bir REST API uç noktası tanımlamak artık dakikalar sürüyor. Ama bu hızın bir bedeli olabilir: yapay zekanın ürettiği kod, çalışıyor gibi görünse de ciddi güvenlik açıkları barındırabiliyor.

Bu yazı, yapay zeka destekli WordPress geliştirme yapan meslektaşlarım ve kendi sitesine özel kod ekleyen teknik bilgisi olan site sahipleri için. Yapay zekayla yazılan WordPress kodunda kontrol ettiğim güvenlik ve kalite noktalarını, örneklerle paylaşacağım.

Neden Ekstra Dikkat Gerekiyor?

Yapay zeka modelleri, internet üzerindeki milyonlarca kod örneğinden öğreniyor. Bu örneklerin önemli bir kısmı eski, güvenlik açısından eksik ya da yalnızca “çalışması” hedeflenmiş kodlar. Dolayısıyla model de zaman zaman aynı alışkanlıkları tekrarlıyor: kullanıcı girdisini temizlemeden kullanmak, çıktıyı kaçış karakterleriyle güvenli hale getirmemek, yetki kontrolünü atlamak ya da hazırlanmamış SQL sorguları yazmak.

WordPress eklenti ekosisteminde bildirilen güvenlik açıklarının büyük kısmı da tam olarak bu tür hatalardan kaynaklanıyor: siteler arası betik çalıştırma (XSS), siteler arası istek sahteciliği (CSRF), SQL enjeksiyonu ve yetki eksikliği.

Güvenlik Kontrol Listesi

1. Girdi Temizleme (Sanitization)

Kullanıcıdan gelen her veri, formdan, URL parametresinden ya da REST isteğinden gelsin, kullanılmadan önce temizlenmelidir. WordPress bunun için tür bazında fonksiyonlar sunar: metin alanları için sanitize_text_field(), e-posta için sanitize_email(), tam sayılar için absint() ya da intval(), URL’ler için esc_url_raw(), çok satırlı metinler için sanitize_textarea_field(). Yapay zekanın yazdığı kodda $_POST ya da $_GET değerlerinin doğrudan kullanıldığını görürseniz, bu bir kırmızı bayraktır. Ayrıca süper global değişkenlere erişmeden önce wp_unslash() ile eğik çizgi kaçışlarının kaldırılması gerekir.

2. Çıktı Kaçışı (Escaping)

Ekrana yazdırılan her değişken, bağlamına uygun şekilde kaçış işleminden geçmelidir. HTML içeriği için esc_html(), HTML öznitelikleri için esc_attr(), URL’ler için esc_url(), JavaScript içinde kullanılacak veriler için wp_json_encode() ya da esc_js(), sınırlı HTML’e izin verilecekse wp_kses() ya da wp_kses_post(). WordPress’te genel kural şudur: “geç kaçış uygula”, yani kaçışı mümkün olduğunca çıktının yazıldığı noktada yap. Yapay zeka kodlarında en sık atlanan adımlardan biri bu.

3. Nonce Doğrulaması

Durum değiştiren her işlem, yani form gönderimi, ayar kaydetme, silme işlemi ya da AJAX isteği, nonce ile korunmalıdır. Formlara wp_nonce_field() ile nonce eklenmeli, işlem tarafında wp_verify_nonce() ya da check_admin_referer() ile doğrulanmalıdır. AJAX işlemlerinde check_ajax_referer() kullanılır. Nonce kontrolü olmayan bir işlem, CSRF saldırılarına açıktır.

4. Yetki Kontrolü

Nonce, isteğin gerçekten sizin formunuzdan geldiğini doğrular; ama isteği yapan kullanıcının bu işlemi yapmaya yetkisi olup olmadığını doğrulamaz. Her hassas işlemde current_user_can() ile uygun yetki kontrol edilmelidir. Örneğin ayar kaydeden bir işlemde manage_options yetkisi aranmalı. REST API uç noktalarında permission_callback mutlaka tanımlanmalı; yapay zekanın sık yaptığı hatalardan biri, bu alanı “__return_true” ile geçmek ya da tamamen atlamak.

5. Veritabanı Sorguları

Özel SQL sorgusu yazmanız gerekiyorsa, değişken içeren her sorgu $wpdb->prepare() ile hazırlanmalıdır. Kullanıcı girdisini sorgu metnine doğrudan eklemek, SQL enjeksiyonu açığı oluşturur. Mümkün olduğunca WP_Query, get_posts(), get_option() gibi WordPress’in yerleşik fonksiyonlarını tercih edin; bunlar güvenliği sizin yerinize sağlar.

6. Doğrudan Erişim Koruması

Eklenti ve tema dosyalarının en başında, dosyanın doğrudan çağrılmasını engelleyen ABSPATH kontrolü bulunmalıdır. Küçük bir detay ama yapay zeka bunu sıklıkla atlıyor.

7. Dosya Yükleme İşlemleri

Dosya yükleme içeren kodlar en riskli kodlardır. Dosya türü ve uzantısı mutlaka doğrulanmalı, wp_handle_upload() gibi WordPress fonksiyonları kullanılmalı, yüklenen dosyaların çalıştırılabilir olmadığından emin olunmalıdır. Bu tür kodları yapay zekaya yazdırdıysanız iki kez kontrol edin.

Kalite Kontrol Listesi

Güvenlik kadar önemli bir diğer konu da kodun kalitesi ve sürdürülebilirliği.

Ön Ek Kullanımı

Fonksiyon, sınıf, sabit, seçenek ve meta anahtarı isimlerinde benzersiz bir ön ek kullanın. Örneğin projelerimde “bd_” gibi bir ön ek kullanıyorum. Yapay zekanın ürettiği “save_settings()” gibi genel isimler, başka eklentilerle çakışmaya yol açabilir.

WordPress Kodlama Standartları

WordPress’in PHP kodlama standartlarına (WPCS) uygun kod yazmak, okunabilirliği ve bakım kolaylığını artırır. PHP_CodeSniffer ile WPCS kurallarını projenize ekleyerek yapay zekanın ürettiği kodu otomatik olarak denetleyebilirsiniz. Bu araç, kaçışı unutulmuş çıktıları ve temizlenmemiş girdileri de büyük ölçüde yakalıyor.

Çeviriye Hazırlık

Kullanıcıya gösterilen tüm metinler __(), esc_html__() gibi çeviri fonksiyonlarıyla ve doğru metin alanı (text domain) ile sarılmalı. Özellikle çok dilli sitelerde bu, sonradan büyük iş yükünü önler.

Doğru Kanca Kullanımı

Script ve stiller wp_enqueue_script() ve wp_enqueue_style() ile, uygun kancalarda ve yalnızca gerekli sayfalarda yüklenmeli. Yapay zekanın bazen header’a doğrudan script etiketi yazdığını ya da tüm sayfalarda gereksiz dosya yüklediğini görüyorum.

Güncel API Kullanımı

Yapay zeka modelleri, kullanımdan kaldırılmış fonksiyonları önerebilir. Önerilen fonksiyonların güncel WordPress sürümünde hâlâ geçerli olduğunu resmi geliştirici kaynaklarından kontrol edin. WP_DEBUG açıkken çalıştırdığınızda kullanımdan kaldırma uyarıları da bu konuda size yardımcı olur.

Yapay Zekaya Daha İyi Kod Yazdırmanın Yolları

Asistanın çıktısının kalitesi, büyük ölçüde verdiğiniz talimatın kalitesine bağlı. Kendi deneyimimde şu yaklaşımlar belirgin fark yarattı:

  • Bağlamı verin: Hedef WordPress ve PHP sürümünü, kullandığınız temayı, ilgili eklentileri ve projenin ön ekini belirtin.
  • Standartları açıkça isteyin: “WordPress kodlama standartlarına uygun, girdileri temizlenmiş, çıktıları kaçışlı, nonce ve yetki kontrolü içeren kod yaz” gibi net talimatlar verin.
  • Küçük parçalarla çalışın: Tüm eklentiyi tek seferde yazdırmak yerine, işlevleri tek tek isteyin ve her birini inceleyin.
  • Açıklama isteyin: Kodun her bölümünün ne yaptığını açıklamasını isteyin. Açıklama ile kod arasındaki tutarsızlıklar, hataları ortaya çıkarır.
  • Kendi kodunu denetletin: Ürettiği kodu ayrı bir istekte “bu kodu WordPress güvenlik açısından denetle” diyerek tekrar inceletin. Bu ikinci bakış, ilk seferde atlanan sorunları sıklıkla yakalıyor.

Örnek: Güvensiz ve Güvenli Kod Karşılaştırması

Farkı somut görmek için basit bir ayar kaydetme işlemi düşünelim. Yapay zekanın sık ürettiği güvensiz versiyonda, form gönderildiğinde $_POST içindeki değer doğrudan update_option() fonksiyonuna veriliyor ve ardından ekrana echo ile yazdırılıyor. Bu kodda nonce kontrolü yok, yetki kontrolü yok, girdi temizlenmiyor ve çıktı kaçışsız yazdırılıyor. Yani dört ayrı güvenlik sorunu tek bir küçük fonksiyonda bir araya geliyor.

Güvenli versiyonda ise işlem şu sırayla ilerliyor: önce check_admin_referer() ile nonce doğrulanıyor, ardından current_user_can( ‘manage_options’ ) ile kullanıcının yetkisi kontrol ediliyor, gelen değer wp_unslash() ve sanitize_text_field() ile temizleniyor, update_option() ile kaydediliyor ve ekrana yazdırılırken esc_html() ile kaçış uygulanıyor. Kodun uzunluğu yalnızca birkaç satır artıyor, ama güvenlik seviyesi tamamen değişiyor. Yapay zekaya kod yazdırırken bu farkı akılda tutmak ve her çıktıyı bu dört adım üzerinden kontrol etmek, en yaygın açıkların neredeyse tamamını önlüyor.

Test ve Yayın Süreci

Yapay zekayla yazılmış hiçbir kodu doğrudan canlı siteye eklemiyorum. Sürecim şöyle: kod önce yerel geliştirme ortamında WP_DEBUG açıkken test ediliyor, ardından PHP_CodeSniffer ile standart denetiminden geçiyor, sonra staging ortamında gerçek verilere yakın koşullarda deneniyor, en son da tam yedek alındıktan sonra canlı siteye aktarılıyor. Sürüm kontrolü için Git kullanmak, bir sorun çıktığında hızlıca geri dönmeyi sağlıyor.

Sık Sorulan Sorular

Yapay zekayla yazdığım eklentiyi WordPress.org’a gönderebilir miyim?

Gönderebilirsiniz, ancak eklenti inceleme ekibi güvenlik, ön ek kullanımı, girdi temizleme, çıktı kaçışı ve kodlama standartları açısından titiz bir inceleme yapıyor. Yapay zekayla yazılmış kodlar bu incelemede sıklıkla düzeltme talebi alıyor; bu yüzden göndermeden önce kapsamlı bir denetim yapın.

functions.php’ye yapay zekanın verdiği kodu eklemek güvenli mi?

Kodu anlıyorsanız, güvenlik kontrollerinden geçirdiyseniz ve önce test ettiyseniz evet. Aksi halde siteyi kullanılamaz hale getirebilir ya da güvenlik açığı oluşturabilirsiniz. Alt tema ya da kod parçacığı eklentisi kullanmak, tema güncellemelerinde kodun kaybolmasını önler.

Hangi işlerde yapay zekaya güvenmemeliyim?

Ödeme işlemleri, kullanıcı kimlik doğrulama, dosya yükleme ve kişisel veri işleme gibi kritik alanlarda yapay zekanın ürettiği kodu mutlaka deneyimli bir geliştiriciye inceletmelisiniz.

Sonuç

Yapay zeka kod asistanları, WordPress geliştirmede gerçek bir verimlilik devrimi yarattı. Ancak hız, güvenlikten ödün vermenin gerekçesi olmamalı. Girdi temizleme, çıktı kaçışı, nonce ve yetki kontrolü, hazırlanmış sorgular ve kodlama standartları; yapay zekayla yazılan her satırda kontrol edilmesi gereken temel noktalar. Sitenize özel, güvenli ve standartlara uygun WordPress geliştirme desteği için iletişim sayfamdan bana ulaşabilirsiniz.

Tavsiye Edilen Yazılar