2014-06-13 6 views
5

मुझे सुरक्षित रूप से मेरी रेल ऐप में डेटाबेस में HTML टैग को सहेज/पुनर्प्राप्त करने की आवश्यकता है। वर्तमान में मैं नीचे की तरह किसी भी मान्यता के बिना एचटीएमएल बचाने:रेलवे में डेटाबेस में एचटीएमएल टैग को सुरक्षित रूप से कैसे सुरक्षित/पुनर्प्राप्त करें?

<h2>Sample title</h2> 
<p>sample description</p> 

और ध्यान में रखते हुए मैं <%=raw @page.desription %> का उपयोग करें। यह उम्मीद के रूप में काम करता है। लेकिन मुझे यह जानने की ज़रूरत है कि यह सुरक्षित है या नहीं?

उत्तर

11

आप कभी भी यह सुनिश्चित नहीं कर सकते कि यह सुरक्षित है। हमेशा उपयोगकर्ता के इनपुट को शत्रुतापूर्ण मानें।

हालांकि, द्वारा यदि "सुरक्षित" क्या आपका मतलब है "से रहित संभावित वास्तव में <script> और <style> तरह हानिकारक तत्वों", तो मैं तुम्हें Sanitization Helper को प्रस्तुत करते हैं। आप अपने एचटीएमएल को डेटाबेस से प्रिंट कर सकते हैं और केवल टैग की एक निश्चित श्वेतसूची की अनुमति दे सकते हैं।

<%=raw sanitize @page.description, tags: %w(h2 p strong em a), attributes: %w(id class href) %>

ऊपर के उदाहरण सभी h2, p, strong, em और a टैग, और उन पर केवल id, class और href विशेषताओं की अनुमति देगा। बाकी सब कुछ हटा दिया जाएगा।

+0

यह ध्वनि एक अच्छा समाधान की तरह है, यह किसी उत्पाद का विवरण है और मुझे केवल कुछ ही चाहिए टैग। तो अगर मैं केवल कुछ टैग की अनुमति देता हूं, तो मुझे जाना अच्छा लगता है? डेटाबेस में संग्रहीत करने से पहले डेटा को स्वच्छ करने का कोई तरीका है? – user3631047

+0

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

+0

धन्यवाद, ठीक है, मैं अन्य उत्तरों की प्रतीक्षा करता हूं, फिर मैं सबसे अच्छा जवाब स्वीकार करता हूं। – user3631047

0

यह तब तक सुरक्षित है जब तक यह एक विश्वसनीय स्रोत से है, अन्यथा आप नहीं जान पाएंगे कि वे वास्तव में क्या स्टोर कर रहे हैं। तो यदि आप इसे संग्रहित करने वाले एकमात्र व्यक्ति हैं, तो इसके लिए जाएं।

+0

नहीं, मैं एकमात्र persion नहीं हूं, यह जनता के लिए खुला है, तो अब मैं कैसे सुनिश्चित कर सकता हूं? – user3631047

+0

देखें: http://stackoverflow.com/questions/14605935/database-for-content-ok-to-store-html – Cereal

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

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