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.

Simone D'Amico
sumber

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

Mike Lewis
sumber
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 
Markus Proske
sumber
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
jason328
sumber
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