Ruby Academy · Pelajaran

Parameter Kukuh

Parameter yang selamat

Pelajaran 3 daripada 413 langkah

Parameter Kukuh ialah pelajaran Ruby Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Ruby Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Ruby Academy merangkumi sejumlah 4 pelajaran.

Masalah Penetapan Pukal

Borang menghantar banyak medan serentak. Jika anda menghantar kesemuanya kepada model tanpa menapisnya, penyerang boleh menambahkan medan yang tidak pernah anda kehendaki, seperti menetapkan admin: true. Ini ialah kelemahan penetapan pukal.

  • Input pengguna tidak boleh dipercayai.
  • Anda mesti menyenarai putih medan yang dibenarkan.
  • Rails menguatkuasakan perkara ini dengan parameter kukuh.

Apakah Parameter Kukuh?

Parameter kukuh memerlukan anda mengisytiharkan dengan jelas parameter yang boleh diterima oleh model. Rails mencetuskan ralat jika anda cuba melakukan penetapan pukal terhadap parameter yang tidak dibenarkan.

Ini menukarkan kelemahan keselamatan yang senyap kepada senarai medan pilihan masuk yang disemak.

require dan permit

Corak ini menggunakan dua kaedah:

  • require(:model) memastikan kunci peringkat atas wujud.
  • permit(:field, ...) menyenarai putih medan dalaman.
def article_params
  params.require(:article).permit(:title, :body)
end

Menggunakan Pembantu

Takrifkan kaedah model_params persendirian dan panggil kaedah tersebut apabila anda mencipta atau mengemas kini. Jangan sekali-kali menghantar params mentah kepada model.

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

private

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

Mengapa Kaedah Persendirian?

Menyimpan senarai putih dalam satu kaedah persendirian bermaksud:

  • create dan update berkongsi peraturan yang sama.
  • Medan yang dibenarkan mudah dicari dan disemak.
  • Kaedah tersebut tidak didedahkan sebagai tindakan pengawal (kaedah persendirian tidak boleh menjadi sasaran laluan).

Perkara yang Ditapis Keluar

Sebarang kunci yang dihantar tetapi tiada dalam senarai permit akan dibuang sebelum sampai kepada model. Jika borang mengandungi admin atas apa-apa sebab tetapi anda hanya membenarkan title dan body, nilai admin akan diabaikan secara senyap, sekali gus memastikan rekod selamat.

Membenarkan Tatasusunan

Untuk senarai kotak pilihan atau pilihan berbilang yang menghantar tatasusunan, benarkan tatasusunan tersebut dengan menghantar tatasusunan kosong sebagai nilainya. Ini membenarkan banyak nilai untuk kunci tersebut.

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

Membenarkan Cincangan Bersarang

Untuk atribut bersarang (borang yang menyunting induk dan anak-anaknya serentak), benarkan kunci bersarang dengan cincangan yang menerangkan medan dalaman.

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

Mengendalikan Parameter yang Hilang

Jika kunci yang diperlukan tiada, require mencetuskan ParameterMissing, yang dipaparkan oleh Rails sebagai 400 Bad Request. Ini melindungi tindakan daripada permintaan yang tidak mengikut format secara automatik.

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

permit! Berbahaya

Anda boleh memanggil params.permit! untuk membenarkan segala-galanya, tetapi tindakan ini membuka semula kelemahan penugasan pukal. Elakkannya kecuali dalam konteks dalaman yang dipercayai. Sentiasa utamakan senarai benarkan yang jelas.

Amalan Terbaik

Pastikan params selamat:

  • Benarkan hanya set medan minimum yang diperlukan.
  • Jangan benarkan penanda sensitif seperti role atau admin daripada borang awam.
  • Tetapkan medan tersebut secara jelas dalam pengawal berdasarkan logik pada sisi pelayan.

Semakan Pantas

Uji pemahaman Anda tentang parameter teguh.

Ulang Kaji: Parameter Teguh

Anda telah mempelajari cara menapis masukan dengan selamat:

  • Penugasan pukal ialah risiko keselamatan yang sebenar.
  • require memerlukan kunci teratas; permit menyenaraikan medan yang dibenarkan.
  • Simpan senarai benarkan dalam kaedah peribadi yang dikongsi.
  • Benarkan tatasusunan dan cincangan bersarang apabila diperlukan.
  • Elakkan permit! dan jangan benarkan penanda sensitif.

Seterusnya, kita akan memulangkan respons menggunakan paparan dan pemaparan.

Percuma untuk bermula

Pelajari Ruby dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
29
Pelajaran
109

Soalan Lazim

Adakah pelajaran “Parameter Kukuh” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Ruby Academy, termasuk “Parameter Kukuh”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Ruby Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Parameter Kukuh”?

Parameter yang selamat Anda berlatih Ruby Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Ruby Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Ruby Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Parameter Kukuh” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Ruby Academy ini?

Ya. Setiap pelajaran Ruby Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Laluan dan Sumber
  2. Pengawal dan Tindakan
  3. Parameter Kukuh
  4. Paparan dan Pemaparan
← Kembali ke Ruby Academy