2011-06-30 19 views
10

क्या https कनेक्शन सुरक्षित कुकीज़ करता है और XSS हमलों को रोकता है। मेरे पास एक साधारण ब्लॉग है जो उपयोगकर्ताओं को इनपुट के रूप में जावास्क्रिप्ट कोड दर्ज करने की अनुमति देता है। मैं अभी भी एक्सएसएस हमलों और कुकी चोरी को रोकने के दौरान उपयोगकर्ता द्वारा जावास्क्रिप्ट इनपुट को अनुमति देना चाहता हूं। क्या https सुरक्षित कुकीज़ की सहायता करता है। मुझे केवल कुछ साइटें मिलीं जो इस बारे में बात करती हैं और अभी भी अस्पष्ट हैं।क्या https सुरक्षित कुकीज़ XSS हमलों को रोकती है?

+0

स्वयं में HTTPS XSS को नहीं रोकता है। –

+0

उपयोगकर्ताओं को जावास्क्रिप्ट इनपुट करने की अनुमति देना ** बेहद ** खतरनाक है। किसी दुर्भावनापूर्ण उपयोगकर्ता को आपके अन्य उपयोगकर्ताओं को कुछ बहुत ही बुरा काम करने से रोकना बहुत मुश्किल है। –

+0

@ कैमरॉन - चाहे वह खतरनाक है या नहीं, अप्रासंगिक है। यह देखते हुए कि ब्राउजर * जावास्क्रिप्ट * छद्म-प्रोटोकॉल का समर्थन करते हैं और ऐड-ऑन जैसे Greasemonkey और Firebug उपयोगकर्ताओं को पृष्ठों में स्क्रिप्ट चलाते हैं, उपयोगकर्ताओं को अपने ब्राउज़र या किसी अन्य उपयोगकर्ता एजेंट में पृष्ठों में जो भी स्क्रिप्ट चाहिए, उसे चलाने से रोकना असंभव है। – RobG

उत्तर

7

एचटीटीपीएस एक मानव-इन-द-बीच हमले को रोक सकता है, न कि एक्सएसएस। दुर्भाग्य से सत्र कुकी अकेले इसके साथ सुरक्षित नहीं है, कोई HTTP के साथ एक पृष्ठ का अनुरोध कर सकता है और फिर उसी कुकी को असुरक्षित भेजा जाएगा।

सुनिश्चित करने के लिए कि सत्र कुकी केवल HTTPS कनेक्शन पर भेज दिया जाता है, तो आप समारोह session_set_cookie_params() सत्र शुरू करने से पहले उपयोग कर सकते हैं:

session_set_cookie_params(0, '/', '', true, true); 
session_start(); 

नोट पहले true, इसका मतलब है कि कुकी भेजा जाएगा केवल HTTPS पृष्ठों पर। दूसरा true ब्राउज़र को बताता है कि जावास्क्रिप्ट को सत्र कुकी तक नहीं पहुंचना चाहिए, यह ब्राउज़र पर निर्भर करता है अगर यह सही तरीके से किया जाता है।

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

+0

हां निश्चित रूप से, एक उदाहरण दिखाएं। आपके उत्तर के अनुसार, यदि सत्र कुकी को https कनेक्शन के माध्यम से जाने के लिए मजबूर किया जाता है, तो क्या हम कह सकते हैं कि यह xss हमलों से सुरक्षित है। – Hussein

+0

@ हुसैन - सत्र कुकी एक्सएसएस हमले का हिस्सा नहीं है, एक्सएसएस के बारे में एक अच्छी व्याख्या यहां आप पा सकते हैं: http://shiflett.org/articles/cross-site-scripting। मैंने जो उदाहरण लिखा है, वह मिश्रित HTTP और HTTPS पृष्ठों का उपयोग करने का वर्णन करता है, लेकिन यह दिखाता है कि कैसे सत्र और प्रमाणीकरण अलग रखना है http://www.martinstoeckli.ch/php/php.html#ssl_nomim_cookie। सत्र कुकी हमेशा हमलों का लक्ष्य होगा। – martinstoeckli

+0

धन्यवाद @ मार्टिन, आपके लेख में बहुत उपयोगी जानकारी। – Hussein

4

HTTP प्रोटोकॉल (HTTPS या HTTP) XSS के साथ मदद नहीं करता है या वास्तव में कोई संबंध नहीं है। आपको निवारक उपायों को जोड़ने और सावधान रहना होगा जहां आप क्लाइंट को जावास्क्रिप्ट आउटपुट करते हैं।

+0

@comm @cwa @jake धन्यवाद। आइए मान लें कि हम चाहते हैं कि उपयोगकर्ता ब्लॉग में Google विज्ञापन कोड इनपुट करे। Google कोड जावास्क्रिप्ट है। जब से इसकी आवश्यकता होती है हम जावास्क्रिप्ट को बाहर नहीं निकाल सकते हैं। अगर हम जावास्क्रिप्ट को अनुमति देते हैं तो हम एक्सएसएस हमले के कई क्षेत्रों के लिए खुले हैं। इसका समाधान क्या है। मुझे यकीन है कि इसके बारे में जाने का एक तरीका है। – Hussein

1

एक बार जब आप किसी को गतिशील रूप से संग्रहीत करने और अपनी साइट पर मनमाने ढंग से JavaScript निष्पादित करने की अनुमति दी है, वे आप उन्हें अकेला छोड़ दें चाहेगा सामान का एक बहुत की पहुंच है। कम से कम, वे आपके PHP सत्र आईडी को हाइजैक कर सकते हैं (उनके पास आपकी कुकीज तक पहुंच होगी), और फिर कुछ दूरस्थ सर्वर पर अग्रेषित करने के लिए अजाक्स का उपयोग करें। एक बार उनके पास हो जाने के बाद, वे आपके उपयोगकर्ताओं को बकवास के सभी प्रकार कर सकते हैं।

आप उन्हें अपने जावास्क्रिप्ट जोड़ने के लिए है, तो मैं सुझाव है कि आप विशेष रूप से सभी अजाक्स कार्यक्षमता को अक्षम (XMLHTTPRequest = function(){} सबसे ब्राउज़रों पर बहुत आसानी से सभी अजाक्स से बचाता है, लेकिन आप क्या आईई की जरूरत है की जांच के लिए आवश्यकता हो सकती है (मैं पता नहीं क्या ActiveXObject = function(){} करेगा ...))। दुर्भाग्यवश, यदि आप उन्हें उपयोग करने की कोई उम्मीद रखते हैं तो आप कुकीज़ तक पहुंच को रोक नहीं सकते हैं (यानी यदि आपके पास सत्र है), तो आपको कुछ और कामकाज ढूंढना होगा।

1

यदि आप चाहते हैं कि उपयोगकर्ता जावास्क्रिप्ट कोड इनपुट करने में सक्षम हों, लेकिन इसे पार्स नहीं किया है, तो इसे htmlspecialchars के माध्यम से चलाएं। यदि आप चाहते हैं कि वे कोड निष्पादित करने में सक्षम हों, तो नहीं, HTTPS मदद नहीं करेगा, और आपको कोड को पार्स करने और उससे कुछ भी खराब करने की आवश्यकता होगी।

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