2011-09-25 22 views
5

इम jQuery Markitup का उपयोग कर इनपुट करने के लिए उपयोगकर्ताओं को अनुमति देने के लिए एचटीएमएल ... तो वे इनपुट सामान की तरह कर सकते हैं:एचटीएमएल से कैसे बचें?

<h1>Foo</h1> 
<p>Foobar</p> 

हालांकि, मैं http://railscasts.com/episodes/204-xss-protection-in-rails-3 देख रहे हैं और इनपुट में कोड के इस टुकड़े की कोशिश की जाय:

<script>alert('test');</script> 

मेरी आश्चर्य के लिए, जब मैंने फॉर्म सबमिट किया और पृष्ठ को रीफ्रेश किया, तो अलर्ट बॉक्स आया। यह एक सुरक्षा जोखिम है!

यह है कि मैं क्या मेरे विचार में है:

<div><%= comment.description.html_safe %></div> 

ऊपर किसी भी html प्रस्तुत हुई है, लेकिन यह भी XSS की संभावना है। तो मैंने कोशिश की:

<div><%= html_safe(comment.description).html_safe %></div> 

लेकिन उपर्युक्त कोई भी HTML प्रस्तुत नहीं करता है। यह वास्तव में एचटीएमएल को टेक्स्ट के रूप में प्रदर्शित करता है, जो वांछित व्यवहार नहीं है।

मुझे HTML प्रस्तुत करने की आवश्यकता है और साथ ही मुझे xss से बचाने की आवश्यकता है। यह कैसे करना है?

उत्तर

0

प्रयास करें

<%= sanitize(comment.description) %> 

अद्यतन:

सभी टैग strip_tags

+0

हां स्वच्छ renders एचटीएमएल का उपयोग निकालने के लिए, और जे एस से चेतावनी पर अमल नहीं करता है। दिलचस्प। लेकिन इसका क्या असर है? मैं देख रहा था http://railscasts.com/episodes/27-cross-site-scripting और रयान बी का उल्लेख है कि यह "पूरी तरह से नहीं है, क्योंकि यह हर एचटीएमएल टैग से नहीं बचता है। जो काफी सुरक्षित नहीं है"। .. –

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