Parameter Kukuh
Parameter yang selamat
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)
endMenggunakan 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)
endMengapa Kaedah Persendirian?
Menyimpan senarai putih dalam satu kaedah persendirian bermaksud:
createdanupdateberkongsi 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::ParameterMissingpermit! 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
roleatauadmindaripada 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.
requirememerlukan kunci teratas;permitmenyenaraikan 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.
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
- Laluan dan Sumber
- Pengawal dan Tindakan
- Parameter Kukuh
- Paparan dan Pemaparan