Matikan token CSRF di rel 3


105

Saya memiliki aplikasi rel yang menyajikan beberapa API ke aplikasi iPhone. Saya ingin dapat memposting di sumber daya tanpa memikirkan untuk mendapatkan token CSRF yang benar. Saya mencoba beberapa metode yang saya lihat di sini di stackoverflow tetapi tampaknya metode tersebut tidak lagi berfungsi pada rel 3.

Terima kasih sudah membantu saya.

Jawaban:


175

Di pengontrol tempat Anda ingin menonaktifkan CSRF, centang:

skip_before_action :verify_authenticity_token

Atau menonaktifkannya untuk semuanya kecuali beberapa metode:

skip_before_action :verify_authenticity_token, :except => [:update, :create]

Atau untuk menonaktifkan hanya metode tertentu:

skip_before_action :verify_authenticity_token, :only => [:custom_auth, :update]

Info lebih lanjut: RoR Request Forgery Protection


1
Ini adalah jawaban yang tepat untuk aplikasi yang memiliki campuran formulir biasa yang dapat diakses browser dan titik akhir API. Jawaban dari Markus Proske akan benar jika Anda benar-benar yakin Anda tidak akan memiliki formulir yang dapat diakses browser di aplikasi Anda.
Asfand Qazi

Kemana tepatnya ini pergi? Bagaimana jika bagian pengontrol dari beberapa permata?
Buang Akun

Bolehkah saya bertanya apakah Anda dapat menjawab pertanyaan yang sangat mirip ini? stackoverflow.com/questions/50159847/…

105

Di Rails3 Anda dapat menonaktifkan token csrf di pengontrol Anda untuk metode tertentu:

protect_from_forgery :except => :create 

12
Bagi siapa pun yang membaca, perhatikan bahwa inilah yang harus masuk ApplicationController. Tanggapan Mike Lewis di bawah ( skip_before_filter :verify_authenticity_token) adalah cara menonaktifkannya pada basis per-pengontrol, dengan asumsi bahwa pengontrol mewarisi dari ApplicationController.
NudeCanalTroll

Sepertinya ini tidak aman stackoverflow.com/questions/10676018/… . Bagaimana menurut anda? Apakah itu?
situs

@ NudeCanalTroll maksud Anda meletakkan ini di controller di mana saya ingin itu tidak akan bekerja?
BlackDivine

Bolehkah saya bertanya apakah Anda dapat menjawab pertanyaan yang sangat mirip ini? stackoverflow.com/questions/50159847/…

32

Dengan Rails 4, Anda sekarang memiliki opsi untuk menulis skip_before_actionalih-alih skip_before_filter.

# Works in Rails 4 and 5
skip_before_action :verify_authenticity_token

atau

# Works in Rails 3 and 4 (deprecated in Rails 4 and removed in Rails 5)
skip_before_filter :verify_authenticity_token

1
Apa bedanya?
Adam D. Ruppe

Bolehkah saya bertanya apakah Anda dapat menjawab pertanyaan yang sangat mirip ini? stackoverflow.com/questions/50159847/…

John Sam, ketika saya punya waktu, saya akan mencoba dan menyiasatinya.
jason328
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.