में protect_from_forgery का सही उपयोग मैं एक रेल 4 ऐप विकसित कर रहा हूं जो एक एपीआई के माध्यम से मोबाइल ऐप परोसता है, और एप्लिकेशन के प्रबंधन के लिए व्यवस्थापक के लिए एक वेब यूआई है। ऐसे कुछ वेब पेज भी हैं जो उपयोगकर्ता देखेंगे (सफल ई-मेल पुष्टिकरण और पासवर्ड रीसेट करें)।रेल ऐप सेवारत वेब और एपीआई
मैंने नियंत्रकों के दो सेट बनाए: एक सेट एपीआईसींट्रोलर से विरासत में मिलता है, और दूसरा AdminController से मिलता है। इन दोनों को एप्लिकेशन नियंत्रक से प्राप्त होता है। वेब पेजों का सामना करने वाले उपयोगकर्ता के लिए ज़िम्मेदार शेष नियंत्रक भी एप्लिकेशन नियंत्रक से विरासत में मिलता है।
इस योजना को देखते हुए, मैं सुरक्षित हूं कि सुरक्षा_from_forgery के साथ सीएसआरएफ सुरक्षा को सही ढंग से कैसे कार्यान्वित किया जाए। मेरे पास वर्तमान में निम्नलिखित है:
class ApplicationController < ActionController::Base
# ...
end
module API
class APIController < ApplicationController
protect_from_forgery with: :null_session, if: Proc.new { |c| c.request.format == 'application/json' }
# ...
end
end
module Admin
class AdminController < ApplicationController
protect_from_forgery with: :exception
# ...
end
end
class UsersController < ApplicationController
protect_from_forgery with: :exception
# ...
end
तो मेरा प्रश्न है: क्या यह सही है? क्या इसे सुधारने का कोई तरीका है? क्या सभी एपीआई अनुरोधों के बाद से एपीकंट्रोलर पॉइंटलेस में चेक केवल जेएसओएन होगा?
ब्रैकमैन ने शिकायत की कि एप्लिकेशन नियंत्रक में कोई सुरक्षा_फ्रॉम_फोररी कॉल नहीं है, लेकिन हो सकता है कि यह सबक्लास में कॉल न दिखाई दे।
अग्रिम धन्यवाद!