2012-12-05 15 views
19

के साथ छवि संसाधनों की सुरक्षा करना मैंने कई वेब सेवाएं बनाई हैं जो JSON डेटा का उत्पादन/उपभोग करती हैं और मैंने उन्हें OAuth2 और Bearer Tokens का उपयोग करके संरक्षित किया है, जो ठीक काम करता है।OAuth2 Bearer Tokens

हालांकि मुझे एक ऐसी वेब सेवा बनाने की आवश्यकता है जो JSON (इसलिए जेपीईजी/पीएनजी डेटा) की बजाय छवियां उत्पन्न करे। स्थिरता के लिए मैं ओएथ 2/बेयरर टोकन के साथ सेवा की रक्षा करना चाहूंगा, लेकिन ऐसा करने से ब्राउज़र आधारित अनुप्रयोगों में उपभोग करने के लिए सेवा को और चुनौतीपूर्ण बना दिया जाएगा जो <img> टैग का उपयोग करके छवि डेटा प्रदर्शित करना चाहते हैं, क्योंकि <img> टैग आवश्यक Authorization: Bearer ...bearer-token... HTTP शीर्षलेख नहीं भेजेगा।

मैं दो तरीकों से इस दौर देख सकते हैं:

सेवा एचटीएमएल 5 से एक्सएचआर Level2 और ब्लॉब और ब्लॉब यूआरएल योजनाओं का प्रयोग करेंगे की
  1. ब्राउज़र आधारित ग्राहक एक ब्लॉब के रूप में छवि डेटा पुनः प्राप्त करने, ब्लॉब का उपयोग ब्लॉब के लिए यूआरएल उत्पन्न करने के लिए यूआरएल योजना और उसके बाद गतिशील रूप से एक आईएमजी टैग बनाएं जो ब्लॉब यूआरएल को संदर्भित करता है। एक छवि प्रदर्शित करने के लिए बहुत सारे काम!

  2. बेयरर टोकन के अतिरिक्त एक एचटीपी कुकी उत्पन्न करने के लिए OAuth2 आधारभूत संरचना को संशोधित करें। प्राधिकरण को स्वीकार करने के लिए सेवा प्राधिकरण को संशोधित करें: बेयरर ... OAuth2 शीर्षलेख या कुकी पहचान के सबूत के रूप में। कुकरी को बीयरर टोकन, httpOnly आदि के समान जीवनकाल होना चाहिए। ब्राउज़र आधारित क्लाइंट सेवा तक पहुंच प्राप्त करने के लिए ब्राउज़र कुकी समर्थन पर भरोसा कर सकते हैं, <img> टैग के माध्यम से छवि डेटा को सामान्य रूप से प्रस्तुत कर सकते हैं। ब्राउज़र क्लाइंट के लिए उपयोग करने में आसान है, लेकिन गैर मानक। सुरक्षा जोखिम प्रोफाइल भालू टोकन या कुकी के लिए समान लगता है।

क्या मैं बाद के दृष्टिकोण के साथ किसी भी सुरक्षा समस्या को देख रहा हूं?

क्या ओएथ 2 के साथ छवि/मीडिया संसाधनों की सुरक्षा के लिए कोई वैकल्पिक दृष्टिकोण है?

उत्तर

12

मुझे लगता है कि आप ब्राउज़र बेस ऐप में एक भालू टोकन प्राप्त करने के मामले में user-agent-based application प्रोफ़ाइल का उपयोग कर रहे हैं।

ओएथ बेयरर टोकन स्पेक टोकन को क्वेरी पैरामीटर ?access_token=mF_9.B5f-4.1JqM के रूप में भेजने का समर्थन करता है। आपके ब्राउज़र में जावास्क्रिप्ट आपके आईएमजी लिंक पर क्वेरी पैरामीटर के रूप में टोकन जोड़ सकता है।

यह अधिक मानक आधारित होगा, लेकिन फिर आपको access_token लॉग में बाहर निकलने के मूल्य के बारे में चिंता करना होगा। मुझे लगता है कि सुरक्षा व्यापार बंद वास्तव में उन भालू टोकन के दायरे पर निर्भर करेगा, और ये कितना महत्वपूर्ण है छवियों की रक्षा कर रहे हैं।

मुझे लगता है कि कुकीज स्वीकार करने के लिए आपके ओथ इंफ्रास्ट्रक्चर को खोलना आपको नए हमले वैक्टर तक खोल सकता है। आरएफसी 6750 विशेष रूप से सीएसआरएफ हमलों के जोखिम को बुलाता है

Implementations that do store bearer tokens in cookies MUST take precautions 
against cross-site request forgery. 
+0

मैं क्वेरी पैरामीटर तंत्र को भूल गया/छूट गया था, स्पष्ट रूप से यह उपयोग केस है जिसे धन्यवाद के लिए बनाया गया है। – cdivilly

+0

इसका मतलब है, सर्वर पक्ष में (फ़िल्टर में हो सकता है), हमें पहले 'प्राधिकरण' शीर्षलेख की जांच करनी होगी; यदि यह खाली है, तो 'request.get पैरामीटर (" access_token ") 'जांचें? –

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

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