2011-08-22 8 views
5

मैं ऐसी साइट पर काम कर रहा हूं जिसे ग्राहक अपनी साइट पर आईफ्रेम में एम्बेड करके उपयोग करेंगे। मैं उन्हें सामग्री की स्टाइल को अनुकूलित करने की क्षमता देना चाहता हूं ताकि वे इसे अपनी साइट की शैलियों के साथ फिट कर सकें।एक बाहरी सीएसएस फ़ाइल सुरक्षित है, या यह कोड इंजेक्शन के लिए नेतृत्व कर सकता है?

मेरे पास मूलभूत विचार है कि उन्हें मुझे एक सीएसएस फ़ाइल में यूआरएल दें, मुझे उस पेज में शामिल करना चाहिए जिसमें मैं आईफ्रेम भरने के लिए उनकी सेवा करता हूं। जहां तक ​​मुझे पता है कि यह सुरक्षित है, लेकिन मैं विशेष रूप से सीएसएस (विशेष रूप से नए संस्करण) से परिचित नहीं हूं, इसलिए मैं इसे सत्यापित करना चाहता हूं।

क्या कोई ऐसा तरीका है जिससे कोई कोई सीएसएस फ़ाइल बना सके जो उन्हें मेरी साइट में कोड इंजेक्ट करने दे या अन्यथा मेरे डोमेन की कुकीज़ जैसी चीज़ों तक पहुंच प्राप्त करे? क्या यह वास्तव में सुरक्षित है, या मुझे एक अलग समाधान के साथ आने की जरूरत है?

+1

मुझे लगता है कि आप उपयोगकर्ताओं को कस्टम शैलियों को टेक्स्टरेरा में पेस्ट करने की अनुमति देने से बेहतर होंगे और फिर आप मान्य कर सकते हैं कि यह वास्तव में सीएसएस है और इसे आपके विचारों में शामिल करने से पहले हानिकारक कुछ भी नहीं है। –

उत्तर

12

नहीं यह असुरक्षित है। expression और -moz-binding कुछ ब्राउज़रों पर सीएसएस के माध्यम से मनमाने ढंग से स्क्रिप्ट निष्पादन का कारण ज्ञात हैं। LiveJournal को बहुत ही सार्वजनिक XSS हमले का सामना करना पड़ा जो उपयोगकर्ता द्वारा प्रदान किए गए सीएसएस में एम्बेडेड जावास्क्रिप्ट के कारण था।

मोज़िला सीएसएस के माध्यम से मनमाना जावास्क्रिप्ट के निष्पादन की अनुमति के लिए निर्णय लेने के साथ, वहाँ एक हम किए गए हैं के अलावा कोई अन्य व्यवहार्य समाधान है।

Caja's attack vector wiki से

:

बनाया गया सीएसएस स्टाइलशीट कुछ ब्राउज़रों पर वैश्विक क्षेत्र में unsanitized जावास्क्रिप्ट निष्पादित कर सकते हैं।

पृष्ठभूमि

सीएसएस आसपास के मार्कअप बदल रहा है और भाव को क्रियान्वित करने के लिए कई तंत्र भी शामिल है।

आईई में एक एक्सटेंशन है जो मनमाने ढंग से जावास्क्रिप्ट को निष्पादित करने की अनुमति देता है। expression संपत्ति का वर्णन http://msdn2.microsoft.com/en-us/library/ms537634.aspx

गतिशील गुणों की शक्ति का उपयोग करके, अब न केवल स्थिरांक के रूप में, बल्कि सूत्रों के रूप में संपत्ति मूल्यों को घोषित करना संभव है। ... स्क्रिप्टिंग के लिए, एक गतिशील संपत्ति कोई कानूनी जेस्क्रिप्ट या माइक्रोसॉफ्ट विजुअल बेसिक स्क्रिप्टिंग संस्करण (वीबीस्क्रिप्ट) कथन हो सकती है। http://msdn2.microsoft.com/en-us/library/ms533503.aspx

binding बाह्य निर्दिष्ट लिपियों http://developer.mozilla.org/en/docs/CSS:-moz-binding & http://developer.mozilla.org/en/docs/XBL:XBL_1.0_Reference:Elements#binding

-moz-binding एक्सएमएल इंटरफेस के माध्यम से बाध्यकारी की अनुमति देता है के लिए बाध्यकारी की अनुमति देता है (यह भी डेटा का उपयोग कर: यूआरएल)

अनुमान

अविश्वसनीय कोड उत्पन्न कर सकते हैं शैली तत्व या शैली विशेषताओं या अन्यथा arbitrar जोड़ें वाई सीएसएस नियम और उन नियमों को ट्रिगर करने वाले डीओएम तत्व बनाएं।

संस्करण

IE 5 और बाद में (लेकिन आईई 8 या बाद में "मानकों मोड" में)।

मोज़िला/फ़ायरफ़ॉक्स, संस्करण ज्ञात नहीं हैं।

+0

बहुत बढ़िया, सभी पृष्ठभूमि के लिए धन्यवाद। ऐसा लगता है कि स्टाइल प्रदान करने के लिए मुझे उनके लिए एक और तंत्र रखना होगा, एक जहां मैं इसे पहले स्वच्छ कर सकता हूं। अब यह पता लगाने के लिए कि सीएसएस को कैसे व्यवस्थित किया जाए ... – Herms

+0

काजा प्रोजेक्ट [सफेद सूचियों] (http://code.google.com/p/google-caja/wiki/CajaWhitelists) को सीएसएस गुणों और मानों के रखता है जो कर सकते हैं उपयोगी होना। इसमें जावा पार्सर और सैनिटाइज़र भी बनाया गया है। –

+0

काजा जीथूब में स्थानांतरित हो गया है, सफेद सूचियां यहां पाई जा सकती हैं: https://github.com/google/caja/tree/master/src/com/google/caja/ लैंग/सीएसएस –

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