2011-06-20 8 views
6

मेरे पास Rails3 द्वारा लिखी गई साइट है। मेरे पोस्ट मॉडल में "सामग्री" नामकरण एक टेक्स्ट कॉलम है। पोस्ट पैनल में, एचटीएमएल फॉर्म tinymce के साथ textarea फ़ील्ड में "सामग्री" कॉलम सेट करता है। सामने वाले पृष्ठ में, tinymce का उपयोग करने के कारण, post.html.erb कोड को <%= raw @post.content %> जैसे कच्चे विधि के साथ कार्यान्वित करने की आवश्यकता है।मैं tinymce के साथ Rails3 का उपयोग कर रहा हूँ। उपयोगकर्ता को बंद ब्राउज़र जावास्क्रिप्ट कैसे इनपुट xss प्रस्तुत करने के लिए?

ठीक है, अब अगर मैं ब्राउज़र जावास्क्रिप्ट बंद करता हूं, तो यह टेक्स्टरेना बिना टिनिमस के टाइप कर सकता है, और शायद उपयोगकर्ता <script>alert('xss');</script> जैसे किसी भी xss को इनपुट करेगा। मेरा मोर्चा उस अलर्ट बॉक्स को दिखाएगा।

मैं पोस्ट्स कंट्रोलर में sanitize(@post.content) पर आज़माता हूं, लेकिन sanitize विधि एक दूसरे के साथ tinymce शैली फ़िल्टर करेगा। उदाहरण के लिए, <span style='color:red;'>foo</span><span>foo</span> बन जाएगा।

मेरा प्रश्न है: एक ही समय में xss इनपुट और रिजर्व टिनिमस शैली को फ़िल्टर कैसे करें?

उत्तर

2

सफाईकर्ता शैली शैली को अनुमति देने के लिए सेट किया जा सकता है। अपने config/application.rb ऐड में:

config.action_view.sanitized_allowed_attributes = ['style'] 

स्वच्छ विधि भी चूक जिसके लिए सीएसएस गुण और कीवर्ड्स यह अनुमति देता है। डिफ़ॉल्ट की सूची प्राप्त करने के लिए sanitizer.rballowed_css_properties और allowed_css_keywords देखें।

कुछ है कि वर्तमान में जोड़ने की अनुमति नहीं है को जोड़ने के लिए अपने config/application.rb:

config.action_view.sanitized_allowed_css_keywords = ['puke'] 

-

आप कुछ भी इस से अधिक जटिल कर तो आप कुछ लिखने के लिए की आवश्यकता होगी रहे हैं कोड। मैं स्क्रैच से ऐसा करने की अनुशंसा नहीं करता हूं, एचटीएमएल स्क्रबर लिखने के लिए अच्छी लाइब्रेरी के लिए Loofah Gem देखें।

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

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