Ruby Academy · Pelajaran

Parameter Kuat

Parameter yang aman.

Pelajaran 3 dari 413 langkah

Parameter Kuat adalah pelajaran Ruby Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Ruby Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Ruby Academy mencakup 4 pelajaran total.

Masalah Penugasan Massal

Formulir mengirim banyak bidang sekaligus. Jika Anda meneruskan semuanya ke model secara sembarangan, penyerang dapat menambahkan bidang yang tidak pernah Anda maksudkan, seperti menetapkan admin: true. Inilah kerentanan penugasan massal.

  • Input pengguna tidak pernah dapat dipercaya.
  • Anda harus membuat daftar putih untuk bidang yang diizinkan.
  • Rails menegakkan hal ini melalui parameter kuat.

Apa Itu Parameter Kuat?

Parameter kuat mengharuskan Anda menyatakan secara eksplisit parameter mana yang boleh diterima model. Rails menimbulkan kesalahan jika Anda mencoba melakukan penugasan massal dengan parameter yang tidak diizinkan.

Dengan demikian, celah keamanan yang sebelumnya tidak terlihat berubah menjadi daftar bidang yang harus dipilih dan ditinjau secara sadar.

require dan permit

Pola ini menggunakan dua metode:

  • require(:model) memastikan kunci tingkat atas tersedia.
  • permit(:field, ...) memasukkan bidang di dalamnya ke daftar putih.
def article_params
  params.require(:article).permit(:title, :body)
end

Menggunakan Pembantu

Definisikan metode privat model_params dan panggil metode tersebut saat membuat atau memperbarui data. Jangan pernah meneruskan params mentah ke 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 Metode Privat?

Menyimpan daftar putih dalam satu metode privat berarti:

  • create dan update menggunakan aturan yang sama.
  • Bidang yang diizinkan mudah ditemukan dan ditinjau.
  • Metode tersebut tidak ditampilkan sebagai aksi pengontrol (metode privat tidak dapat dirutekan).

Apa yang Disaring

Setiap kunci yang dikirimkan dan tidak tercantum dalam daftar permit akan dibuang sebelum mencapai model. Jika sebuah formulir entah bagaimana menyertakan admin tetapi Anda hanya mengizinkan title dan body, nilai admin akan diabaikan tanpa pemberitahuan sehingga rekaman tetap aman.

Mengizinkan Larik

Untuk daftar kotak centang atau pilihan ganda yang mengirim larik, izinkan larik tersebut dengan meneruskan larik kosong sebagai nilainya. Dengan begitu, satu kunci tersebut dapat menerima banyak nilai.

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

Mengizinkan Hash Bertingkat

Untuk atribut bertingkat (formulir yang mengedit induk dan turunannya sekaligus), izinkan kunci bertingkat dengan hash yang menjelaskan bidang di dalamnya.

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

Menangani Parameter yang Hilang

Jika kunci yang diperlukan tidak ada, require menimbulkan ParameterMissing, yang dirender Rails sebagai 400 (Permintaan Buruk). Dengan demikian, aksi terlindungi dari permintaan yang formatnya salah secara otomatis.

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

permit! Berbahaya

Anda dapat memanggil params.permit! untuk mengizinkan semuanya, tetapi hal ini membuka kembali celah penetapan massal. Hindari ini kecuali dalam konteks internal tepercaya. Selalu utamakan daftar putih yang eksplisit.

Praktik Terbaik

Jaga keamanan parameter:

  • Masukkan jumlah kolom minimum ke dalam daftar putih.
  • Jangan pernah mengizinkan penanda sensitif seperti role atau admin dari formulir publik.
  • Tetapkan kolom tersebut secara eksplisit di pengendali berdasarkan logika sisi server.

Pemeriksaan Singkat

Uji pemahaman Anda tentang parameter kuat.

Ringkasan: Parameter Kuat

Anda telah mempelajari cara menyaring masukan dengan aman:

  • Penetapan massal merupakan risiko keamanan yang nyata.
  • require mengharuskan kunci teratas; permit memasukkan kolom ke daftar putih.
  • Simpan daftar putih dalam metode privat bersama.
  • Izinkan larik dan hash bersarang jika diperlukan.
  • Hindari permit! dan jangan pernah mengizinkan penanda sensitif.

Selanjutnya, kita akan mengembalikan respons dengan tampilan dan perenderan.

Gratis untuk memulai

Belajar Ruby dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
29
Pelajaran
109

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Parameter Kuat” gratis?

Ya — teks lengkap “Parameter Kuat” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Ruby Academy, upgrade ke CoddyKit PRO. Kursus Ruby Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Parameter Kuat”?

Parameter yang aman. Kamu berlatih Ruby Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Ruby Academy?

Tidak diperlukan pengalaman sebelumnya. Ruby Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Parameter Kuat” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Ruby Academy ini?

Ya. Setiap pelajaran Ruby Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Rute dan Sumber Daya
  2. Controller dan Action
  3. Parameter Kuat
  4. View dan Rendering
← Kembali ke Ruby Academy