2009-08-22 10 views
5

मेरे पास एक ऐसा पृष्ठ है जिस पर अनुरोध किया गया है कि मैं सीएसएस के माध्यम से कुछ उपयोगकर्ता अनुकूलन की अनुमति देता हूं।उपयोगकर्ता द्वारा जोड़े गए बाहरी सीएसएस (माइस्पेस की तरह) के साथ सुरक्षा का प्रबंधन कैसे करें

मुझे यह करने में खुशी है, लेकिन यह समझने की कोशिश कर रहा हूं कि इसे कैसे सुरक्षित किया जाए। ऐसी कई स्टाइलशीट नहीं हैं जो पृष्ठ पर लागू होंगी, लेकिन मैंने मूल रूप से सोचा था कि अगर मैंने अभी जांच की है कि पृष्ठ एक सीएसएस एक्सटेंशन था जो मैं सुरक्षित रहूंगा।

हालांकि, मैंने जो शोध किया है, वह दिखाता है कि xss सीएसएस के माध्यम से करना आसान है। लेकिन मैं उपयोगकर्ता द्वारा उत्पन्न बाहरी सीएसएस को सुरक्षित रूप से शामिल करने की अनुमति देने के तरीके पर कोई भी पुनर्विक्रय नहीं ढूंढ पाया है।

क्या किसी के पास इसके लिए कोई सुझाव या संसाधन हैं?

माइस्पेस कुछ अन्य साइटों के साथ ऐसा करने का प्रबंधन करता है, लेकिन मैं यह नहीं देख सकता कि यह सुरक्षित कैसे होगा।

मेरे पास उस पृष्ठ पर कोई 'सुरक्षित' उपयोगकर्ता डेटा नहीं है जहां बाहरी सीएसएस जाता है। लेकिन मुझे एक खोज के लिए कुछ चर मिलते हैं।

---------------- sliky की प्रतिक्रिया के बाद अतिरिक्त डेटा ----------------------

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

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

मैं जहाँ उपयोगकर्ताओं को मैं अलग सीएसएस अपने पृष्ठों के लिए बनाई गई लिंक सक्षम करने के लिए है की अनुमति देते हैं, जहां यह http://mysite.com/page?useracct=12343&extcss=http://location/of/css.css

मैं सेट अप useracct होगा अपनी साइट पर एक लिंक है, इसलिए केवल होगा। मेरी साइट पर, मैं उन उपयोगकर्ताओं के खाते को सीएसएस पेज से लिंक करूंगा।

तो किसी को सिर्फ साथ नहीं आते हैं और कहते हैं कि http://mysite.com/page?extcss=http://new/dangerous/css.css

हालांकि, वे लिंक http://mysite.com/page?useracct=12343&extcss=http://new/dangerous/css.css एक ही तरीका है किसी को उस पृष्ठ पर जाने हैं बना सकते हैं हो सकता है अगर कि जो व्यक्ति खतरनाक सीएसएस बनाया अग्रेषित कर सकते हैं साथ कि लिंक।

मुझे लगता है कि अगर मैंने एक्सटीसीएसएस को धोया और नमकीन किया, तो यह अधिक सुरक्षित हो सकता है। शायद यह जाने का सबसे अच्छा तरीका है?

उत्तर

4

एक ऐसी भाषा का उपयोग करें जिसमें सीएसएस लाइब्रेरी है, या सीएसएस से एएसटी जैसी संरचना बनाने के लिए एक पार्सर लिखें और फिर डोडी सामान की जांच करें।

यह तुलना में कठिन हो सकता है, जैसे कि div आकार (पूरे पृष्ठ को गले लगाते हुए), फ़्लोटिंग और जेड-ऑर्डर प्रबंधित करने के लिए मुश्किल होंगे और आपको जो मूल्य प्रदान कर सकते हैं, उस पर सीमाएं होनी पड़ सकती हैं।

एक अच्छा विचार

एक XML आधारित थीम स्कीमा सीएसएस करने के लिए अनुवाद किया जा सकता है कि बनाएँ। थीम को उत्पन्न करने के लिए उपयोगकर्ताओं को छवियों + एक्सएमएल अपलोड करने दें।

एक्सएमएल नियंत्रण करने के लिए आसान है।

PHP CSS Parser, Python CSS parsing

गुड लक

+0

बहुत जानकारीपूर्ण प्रतिक्रिया एडेन, और सीएसएस पार्सर पर लिंक के लिए धन्यवाद। मुझे नहीं लगता कि उपयोगकर्ता अपलोड xml + छवियों को वे वास्तव में देख रहे हैं। बस कुछ सरल शैलियों को लागू करने की कोशिश कर रहे हैं, और पोजिशनिंग के लिए, मैं हमेशा अपनी स्टाइलशीट को शामिल करता हूं, ताकि किसी भी फ़्लोटिंग/जेड-इंडेक्स इत्यादि को संभाला जा सके क्योंकि सभी तत्व पोजिशनिंग उपयोगकर्ता सामग्री पोस्ट कर दी गई है। यह ज्यादातर मामूली आकार, रंग और पृष्ठभूमि छवियों को समायोजित कर सकता है। 'यह इससे ज्यादा कठिन हो सकता है' और बोल्ड 'गुड लक' क्या आप सुझाव दे रहे हैं कि शायद मुझे ऐसा नहीं करना चाहिए? – pedalpete

+0

बिलकुल नहीं, बस याद रखें कि चीजें जैसे महत्वपूर्ण और अन्य अस्पष्ट चीजें आपको बम में काट सकती हैं यदि आप उपयोगकर्ताओं को सीएसएस (या उस मामले के लिए कोई सामग्री) अपलोड करने देते हैं। इसे लगभग गणितीय बनाएं ... उन सभी उपलब्ध वाक्यविन्यासों के क्रमिक कार्य करें जिन्हें आप अवरुद्ध करना चाहते हैं और परीक्षण करते हैं कि यह काम करता है। इस पर निर्भर करता है कि इनपुट को कितना महत्वपूर्ण है ... अगर यह दोस्तों के लिए एक छोटी सी साइट है, तो आप थोड़ा आराम कर सकते हैं :) इसके लिए जाओ मैं कहता हूं! –

2

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

एक सुरक्षा बिंदु से एक बेहतर मॉडल, बिल्कुल वैसा ही सोचता है कि वे क्या अनुकूलित करना चाहते हैं और उन्हें केवल उन चीजों को संपादित करने दें।

तो तुम सेट करने के लिए क्षमताओं प्रदान कर सकता है:

  • पृष्ठभूमि रंग
  • फ़ॉन्ट्स विभिन्न चीजों के लिए
  • छवियाँ
  • आदि

ट्विटर (पिछली बार मैं यह वैसे भी प्रयोग किया जाता) ऐसा करने के लिए एक अच्छी विधि थी, और परिणाम यह भी है कि साइट अनुकूलन योग्य है, फिर भी एक मानक रूप बनाए रखता है, जो, आईएमएचओ, जी है reat।

+0

हालांकि मैं आपके साथ रेशमी से सहमत हूं, ट्विटर जैसी डिज़ाइन प्रबंधन प्रणाली बनाने का कार्य कठिन है। मैं केवल कुछ उपयोगकर्ताओं को क्षमता प्रदान कर रहा हूं, जो डिजाइन और लेआउट सुधारों को बेहतर कर सकते हैं जो मैं कर सकता हूं। मेरी सुरक्षा चिंता यह है कि एक बार जब मैं इन विशेष उपयोगकर्ताओं को एक सीएसएस जोड़ने की क्षमता प्रदान करता हूं, तो अनिवार्य रूप से कोई भी अपना स्वयं का सीएसएस सेट करने के लिए चर का उपयोग कर सकता है। हालांकि उन्हें उस यूआरएल पर भेजने की आवश्यकता होगी जिसे उन्होंने इसके लिए बनाया है। बाहरी सीएसएस सेट होने पर मैं नो-इंडेक्स सेट कर सकता हूं, लेकिन अभी भी मुझे इस बारे में चिंता है कि मैं खुद को क्या प्राप्त कर रहा हूं। – pedalpete

+0

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

0

सीएसएस कई मनमाने ढंग से जेएस निष्पादित कर सकते हैं।

आप एक लचीला सीएसएस पार्सर और प्रक्षालक की जरूरत है, तो आप CssValidator पर एक नज़र ले जा सकते हैं और इससे संबंधित परीक्षण यह क्या करता है में से कुछ दिखाने देखें: CssValidatorTest

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