CSRF टोकन को रेल 3 में बंद करें


105

मेरे पास एक रेल एप्लिकेशन है जो एक iPhone एप्लिकेशन के लिए कुछ एपीआई परोसता है। मैं केवल सीएसआरएफ टोकन प्राप्त करने के लिए दिमाग लगाए बिना एक संसाधन पर पोस्ट करने में सक्षम होना चाहता हूं। मैंने कुछ तरीकों की कोशिश की, जिन्हें मैं यहां स्टैकवॉयरफ़्लो में देखता हूं, लेकिन ऐसा लगता है कि वे अब रेल 3 पर काम नहीं करते हैं।

मेरी मदद करने के लिए धन्यवाद।

जवाबों:


175

नियंत्रक में जहाँ आप CSRF को चेक को निष्क्रिय करना चाहते हैं:

skip_before_action :verify_authenticity_token

या कुछ तरीकों को छोड़कर सब कुछ के लिए इसे निष्क्रिय करने के लिए:

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

या केवल निर्दिष्ट विधियों को अक्षम करने के लिए:

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

अधिक जानकारी: आरओआर अनुरोध सुरक्षा संरक्षण


1
यह उन ऐप्स के लिए सही उत्तर है जिनमें नियमित ब्राउज़र-सुलभ रूपों और एपीआई एंडपॉइंट्स का मिश्रण है। मार्कस प्रॉसीक का उत्तर सही होगा यदि आप पूरी तरह से सुनिश्चित हैं कि आप अपने ऐप में कोई ब्राउज़र-सुलभ फॉर्म नहीं रखने जा रहे हैं।
असफंद काजी

यह वास्तव में कहाँ जाता है? क्या होगा अगर कुछ मणि का नियंत्रक हिस्सा?
थ्रो अवे अकाउंट

क्या मैं आपसे पूछ सकता हूं कि क्या आप इसी तरह के सवाल का जवाब दे सकते हैं? stackoverflow.com/questions/50159847/…

105

Rails3 में आप अपने नियंत्रक में विशेष विधियों के लिए csrf टोकन को निष्क्रिय कर सकते हैं:

protect_from_forgery :except => :create 

12
पढ़ने वाले किसी के लिए, ध्यान दें कि यह वही है जो अंदर जाना चाहिए ApplicationController। नीचे माइक लुईस की प्रतिक्रिया ( skip_before_filter :verify_authenticity_token) है कि प्रति नियंत्रक के आधार पर इसे कैसे निष्क्रिय किया जाए, यह मानते हुए कि नियंत्रक से विरासत में मिली है ApplicationController
न्यूडाकनालट्रॉल

ऐसा लगता है कि यह असुरक्षित stackoverflow.com/questions/10676018/… है । तुम क्या सोचते हो? क्या यह?
साइट्स

@ न्यूडनल ट्रोल का मतलब है कि आप इसे कंट्रोलर में रख सकते हैं जहां मैं चाहता हूं कि यह काम न करे?
ब्लैकविइन

क्या मैं आपसे पूछ सकता हूं कि क्या आप इसी तरह के सवाल का जवाब दे सकते हैं? stackoverflow.com/questions/50159847/…

32

रेल 4 के साथ, अब आपके पास skip_before_actionइसके बजाय लिखने का विकल्प है skip_before_filter

# Works in Rails 4 and 5
skip_before_action :verify_authenticity_token

या

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

1
क्या फर्क पड़ता है?
एडम डी। रूप्पे

क्या मैं आपसे पूछ सकता हूं कि क्या आप इसी तरह के सवाल का जवाब दे सकते हैं? stackoverflow.com/questions/50159847/…

जॉन सैम, जब मेरे पास समय होगा तो मैं कोशिश करूंगा और इसके आसपास पहुंचूंगा।
jason328
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.