2011-06-03 13 views
6

का उपयोग करते समय सीएसआरएफ को रोकना मैंने अपने जीडब्ल्यूटी-आरपीसी कोड को नए RequestFactory तंत्र में पोर्ट करना शुरू कर दिया है।जीडब्ल्यूटी के अनुरोध फैक्टरी

क्रॉस-साइट अनुरोध जालसाजी (सीएसआरएफ) को रोकने के लिए, मेरे जीडब्ल्यूटी-आरपीसी कोड ने एक कुकी में संग्रहीत सत्र आईडी को पकड़ लिया, और इसे अनुरोध के पेलोड में शामिल किया। क्या यह RequestFactory के साथ संभव है?

मैं समझता हूं कि चार अनिवार्य लोकेटर विधियां हैं, जिनमें findEntity(id_type id) शामिल हैं; तो मैं सोच रहा हूं: ओह प्रिय: मैं अपना सत्र आईडी कहां रखूं?

उत्तर

8

आमतौर पर, आप अनुरोध करने के लिए टोकन जोड़ने के लिए DefaultRequestTransport बढ़ा देंगे (जैसे कि एक कस्टम हेडर के रूप में है, लेकिन आप यह भी अनुरोध शरीर के लिए यह जोड़ सकता है) और यह आपके RequestFactory की init लिए गुजरती हैं। सर्वर-साइड पर, आप या तो सर्वलेट फ़िल्टर का उपयोग करेंगे या आप अनुरोध फ़ैक्टरी अनुरोध को संसाधित करने से पहले टोकन को संसाधित करने के लिए RequestFactoryServlet का विस्तार करेंगे। आप यहां अपना खुद का "प्रोटोकॉल" परिभाषित करने के लिए स्वतंत्र हैं: उदा। 403 या 401 स्थिति (या जो कुछ भी) लौट रहा है और फिर अपने ऐप के परिणाम को संवाद करने के लिए RequestTransport में इसे संसाधित करता है।

+0

कूल। सर्वर-साइड सामान मुझे चरणबद्ध नहीं करता है, लेकिन डिफॉल्टरक्वेट ट्रान्सपोर्ट को विस्तारित करना थोड़ा मुश्किल है। क्या मैं शायद अनुरोध आईडी पर हेडर के रूप में सत्र आईडी जोड़ूंगा? – David

+1

वास्तव में इसे शीर्षलेख के रूप में जोड़ने का सबसे आसान तरीका है (इसलिए मेरी टिप्पणी कोष्ठक में: "जैसे कस्टम हेडर, लेकिन आप इसे अनुरोध निकाय में भी जोड़ सकते हैं")। –

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