0Pricing
Ruby Academy · Ders

Güçlü Parametreler

Güvenli parametreler

Güçlü Parametreler, CoddyKit'te ücretsiz bir Ruby Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Ruby Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Ruby Academy kursu toplamda 4 dersten oluşur.

Toplu Atama Sorunu

Formlar aynı anda birçok alan gönderir. Bunların tümünü bir modele düşünmeden aktarırsanız, bir saldırgan hiç amaçlamadığınız alanları ekleyebilir; örneğin admin: true ayarlayabilir. Buna toplu atama güvenlik açığı denir.

  • Kullanıcı girdisine hiçbir zaman güvenilmez.
  • İzin verilen alanları listelemelisiniz.
  • Rails bunu güçlü parametrelerle zorunlu kılar.

Güçlü Parametreler Nedir?

Güçlü parametreler, bir modelin hangi params değerlerini kabul edebileceğini açıkça belirtmenizi gerektirir. İzin verilmemiş params değerlerini toplu olarak atamaya çalışırsanız Rails bir hata fırlatır.

Bu yaklaşım, sessizce gözden kaçabilecek bir güvenlik açığını, isteğe bağlı olarak etkinleştirilen ve gözden geçirilmiş bir alan listesine dönüştürür.

require ve permit

Bu kalıp iki yöntem kullanır:

  • require(:model), en üst düzey anahtarın mevcut olmasını sağlar.
  • permit(:field, ...), iç alanları izin verilenler listesine ekler.
def article_params
  params.require(:article).permit(:title, :body)
end

Yardımcıyı Kullanma

Özel bir model_params yöntemi tanımlayın ve kayıt oluşturduğunuz veya güncellediğiniz yerde bunu çağırın. Ham params değerlerini hiçbir zaman doğrudan bir modele aktarmayın.

def create
  @article = Article.new(article_params)
  @article.save
  redirect_to @article
end

private

def article_params
  params.require(:article).permit(:title, :body)
end

Neden Özel Bir Yöntem?

İzin verilenler listesini tek bir özel yöntemde tutmanın yararları şunlardır:

  • create ve update aynı kuralları paylaşır.
  • İzin verilen alanları bulmak ve gözden geçirmek kolaydır.
  • Bu yöntem bir denetleyici eylemi olarak dışarıya açılmaz (özel yöntemler rotalar üzerinden çağrılamaz).

Neler Filtrelenir?

Gönderilen ve permit listesinde bulunmayan tüm anahtarlar modele ulaşmadan önce atılır. Bir formda bir şekilde admin bulunur, ancak yalnızca title ve body için izin verirseniz admin değeri sessizce yok sayılır ve kayıt güvenli kalır.

Dizilere İzin Verme

Dizi gönderen onay kutusu listeleri veya çoklu seçimler için değer olarak boş bir dizi geçirerek bunlara izin verin. Bu, söz konusu anahtar için birden çok değere izin verir.

params.require(:article).permit(:title, tag_ids: [])

İç İçe Karmalara İzin Verme

İç içe öznitelikler için (bir üst kaydı ve alt kayıtlarını aynı anda düzenleyen bir form), iç alanları açıklayan bir karma ile iç içe anahtarlara izin verin.

params.require(:order).permit(
  :customer_name,
  items_attributes: [:product_id, :quantity]
)

Eksik Params Değerlerini Ele Alma

Gerekli anahtar yoksa require, Rails'in 400 Hatalı İstek yanıtı olarak işlediği ParameterMissing istisnasını fırlatır. Bu, eylemleri hatalı isteklere karşı otomatik olarak korur.

# Missing :article key raises:
# ActionController::ParameterMissing

permit! Tehlikelidir

Her şeye izin vermek için params.permit! çağırabilirsiniz; ancak bu, toplu atama açığını yeniden ortaya çıkarır. Güvenilen dahili bağlamlar dışında bundan kaçının. Her zaman açık bir izin listesi kullanmayı tercih edin.

En İyi Uygulamalar

Parametrelerin güvenliğini koruyun:

  • En az sayıda alanı izin listesine ekleyin.
  • Genel kullanıma açık bir formdan role veya admin gibi hassas işaretlere asla izin vermeyin.
  • Bu tür alanları, sunucu tarafındaki mantığa göre denetleyicide açıkça ayarlayın.

Hızlı Kontrol

Güçlü parametreler konusundaki anlayışınızı sınayın.

Özet: Güçlü Parametreler

Girdiyi güvenli biçimde filtrelemeyi öğrendiniz:

  • Toplu atama gerçek bir güvenlik riskidir.
  • require üst düzey anahtarı zorunlu kılar; permit alanları izin listesine ekler.
  • İzin listesini paylaşılan bir özel yöntemde tutun.
  • Gerektiğinde dizilere ve iç içe karmalara izin verin.
  • permit! kullanmaktan kaçının ve hassas işaretlere asla izin vermeyin.

Sırada görünümler ve oluşturma ile yanıt döndürmeye geçiyoruz.

Sıkça Sorulan Sorular

“Güçlü Parametreler” dersi ücretsiz mi?

Evet — “Güçlü Parametreler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Ruby Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Ruby Academy kursu toplamda 4 dersten oluşur.

“Güçlü Parametreler” dersinde ne öğreneceğim?

Güvenli parametreler Ruby Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Ruby Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Ruby Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Güçlü Parametreler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Ruby Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Ruby Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yollar ve Kaynaklar
  2. Denetleyiciler ve Eylemler
  3. Güçlü Parametreler
  4. Görünümler ve Görüntüleme
← Ruby Academy Sayfasına Dön