2012-12-29 55 views
14

का उपयोग करके सिनात्रा में उत्पत्ति व्हाइटलिस्ट विकल्प कैसे निर्दिष्ट करूं, मेरे पास एक वेब ऐप है, http://api.example.com पर POST अनुरोध करने दें। एपीआई सर्वर रैक सुरक्षा सक्षम के साथ सिनात्रा का नवीनतम संस्करण चला रहा है। मुझे यह त्रुटि मिल रही है 'हमला रैक :: सुरक्षा :: HttpOrigin' द्वारा रोका गया।मैं रैक/प्रोटेक्शन

मैं कुछ इस तरह कर सकते हैं:

set :protection, :except => [:http_origin] 

लेकिन मैं की तरह मैं सिर्फ वास्तविक समस्या की अनदेखी कर रहा है।

मैं यह करने की कोशिश की है:

use Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com'] 

लेकिन मैं अभी भी चेतावनी मिलती है।

अनुरोध अस्वीकार नहीं किया गया है, लेकिन सिनात्रा मेरे सत्र see this post को साफ़ करता है और मुझे session_id की आवश्यकता है।

HttpOrigin कक्षा के लिए option_whitelist को निर्दिष्ट करने के तरीके पर कोई मदद या उदाहरण बहुत सराहना की जाएगी।

+0

क्या आपने 'रैक :: सुरक्षा का उपयोग करने की कोशिश की है: origin_whitelist => [' http://web.example.com '] '? [स्रोत] को देख रहे हैं (https://github.com/rkh/rack-protection/blob/master/lib/rack/protection/http_origin.rb), मुझे लगता है कि आप सरणी का भी निपटान कर सकते हैं (जब तक कि आप न हों कई पथ जोड़ना) क्योंकि एक स्ट्रिंग को किसी सरणी में लपेटा जाता है। – iain

+0

यह या तो काम नहीं करता प्रतीत होता है। मुझे लाइब्रेरी स्पेक परीक्षणों से मेरा मूल उदाहरण मिला [यहां] (https://github.com/rkh/rack-protection/blob/master/spec/http_origin_spec.rb) – Emjay

उत्तर

19

set :protection के लिए एक हैश के रूप में अपने विकल्पों को दर्रा:

set :protection, :origin_whitelist => ['http://web.example.com'] 

सिनात्रा फिर जब उसे सेट अप करने Rack::Protection के माध्यम से उन्हें पारित करेंगे।

मैं कारण यह विफल हो रहा है पर शक है जब आप use Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com'], कि आप अभी भी सुरक्षा सक्षम कर लिया है, ताकि आप HttpOrigin की दो उदाहरणों के साथ खत्म होता है। आप की कोशिश कर सकते

set :protection, :except => [:http_origin] 
use Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com'] 

(अर्थात दोनों लाइनों आप की कोशिश की है एक साथ), लेकिन मुझे लगता है कि पहला समाधान क्लीनर है।

+0

बहुत बढ़िया, धन्यवाद, यही वह था जो मैं देख रहा था के लिये! – Emjay

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^