2012-03-09 2 views
6

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

मैं एक्सएसएस लिंक को रोकने के लिए यूआरएल को कैसे स्वच्छ कर सकता हूं?

अग्रिम धन्यवाद, XSS की

उदाहरण है, जो रेल 'स्वच्छ विधि

@url = "javascript:alert('XSS')" 
<a href="<%=sanitize @url%>">test link</a> 

उत्तर

1

आप रेल का उपयोग कर सकते' कुछ बुनियादी प्रतिबंध के लिए sanitize विधि द्वारा रोके नहीं है।

या आप अधिक विकल्पों के लिए rgrove के sanitize मणि का उपयोग कर सकते हैं।

उम्मीद है कि इससे मदद मिलती है।

+0

@url = की अपने लिंक को साफ करेंगे। मुझे अपने प्रश्न में प्रतिबिंबित होना चाहिए कि मैंने पहले से ही रेल की स्वच्छता विधि का परीक्षण किया है। – rickypai

+1

rgrove का sanitize मणि वास्तव में अच्छा है अगर आपको अंतर्निहित रेल सैनिटाइज की तुलना में अधिक नियंत्रण की आवश्यकता है। किसी भी तरह से, बेन के जवाब बताते हैं, आपको पूरे लिंक के लिए एचटीएमएल को स्वच्छ करने की जरूरत है, सिर्फ यूआरएल ही नहीं। – antinome

5

href एक बार प्रतिबंध लगाया प्रयास पहले से ही की तरह एक टैग में है:

url = "javascript:alert('XSS')" 
sanitize link_to('xss link', url) 

यह मैं देता है:

<a>xss link</a> 
1

sanitize एचटीएमएल तार, नहीं यूआरएल के साथ काम करता है। जिसका अर्थ है कि आप एक यूआरएल को स्वयं ही स्वच्छ नहीं कर सकते हैं, लेकिन आप एचटीएमएल के एक टुकड़े को स्वच्छ कर सकते हैं जिसमें एक दुर्भावनापूर्ण यूआरएल वाला लिंक है। ": चेतावनी ('XSS') जावास्क्रिप्ट" xss link काम नहीं करता है उदाहरण के

<%= sanitize "<a href='#{@url}'>Things</a>" %> 

कि सभी ज्ञात दुर्भावनापूर्ण विशेषताओं

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

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