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)
endYardı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)
endNeden Özel Bir Yöntem?
İzin verilenler listesini tek bir özel yöntemde tutmanın yararları şunlardır:
createveupdateaynı 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::ParameterMissingpermit! 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
roleveyaadmingibi 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;permitalanları 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
- Yollar ve Kaynaklar
- Denetleyiciler ve Eylemler
- Güçlü Parametreler
- Görünümler ve Görüntüleme