मेरी पोस्ट इकाई के लिए मैं डेटाबेस में HTML और मार्कडाउन दोनों संग्रहीत करता हूं (HTML को मार्कडाउन से परिवर्तित किया जाता है)। एचटीएमएल संपादन क्षमता (डब्लूएमडी के साथ) के लिए पृष्ठ और मार्कडाउन पर प्रतिपादन के लिए है। मैं डीबी को स्टोर करने से पहले HTML को sanitize। प्रश्न यह है: क्या मुझे मार्कडाउन को भी स्वच्छ करना चाहिए? या यह xss-safe है अगर मैं इसे केवल wmd-editor को पास करता हूं?क्या मुझे मार्कडाउन को स्वच्छ करना चाहिए?
उत्तर
मार्कडाउन में मनमाना HTML हो सकता है; यह स्पष्ट रूप से अनुमति है। तो आपको वेब क्लाइंट को भेजने से पहले, इसे भी स्वच्छ करना चाहिए, या कम से कम इसे एचटीएमएल में परिवर्तित करने के परिणाम को स्वच्छ करना चाहिए।
मुझे याद है कि शुरुआती दिनों में एसओ के साथ संभवतः शोषण में से एक यह है कि आप जेएस सामग्री को मार्कडाउन में डाल सकते हैं, और जो भी आपका लेख संपादित करता है, वह पूर्वावलोकन में उन स्क्रिप्ट को ट्रिगर करेगा। मुझे नहीं पता कि यह अभी तक तय है या नहीं।
मैंने देखा है कि आप "डीबी को संग्रहीत करने से पहले HTML को स्वच्छ करें" और अगली वाक्य में xss-safe की बात करें। उन इनपुट सत्यापन के दो विभिन्न पहलुओं हैं, और आप उन्हें मिश्रण चाहिए नहीं, और अपने डिजाइन में दोनों का पता:
आप सुरक्षित रूप से, डेटाबेस में किसी भी उपयोगकर्ता इनपुट डालने यानी यकीन है कि इनपुट ठीक से बच रहा है बनाना चाहिए (mysql_real_escape_string, संग्रहित प्रक्रियाओं, ORM पुस्तकालयों, आदि)
आप चाहिए सुरक्षित रूप से (सामूहिक नरसंहार के हथियारों के लिए इनपुट सहित), को हटाने या किसी दृश्यों कि XSS शोषण और अन्य वैमनस्य में बदल सकता है भागने HTML/जे एस के लिए उत्पादन।
प्रश्न के रूप में, मैं क्रिस के साथ सहमत हूँ - के बाद से Markdown एचटीएमएल शामिल कर सकते हैं, यह स्वच्छ होना चाहिए।
बस एक अतिरिक्त:
This question सामूहिक नरसंहार के हथियारों
- 1. मुझे जावा में डेटाबेस इनपुट को कैसे स्वच्छ करना चाहिए?
- 2. क्या मुझे संग्रहीत मार्कडाउन को HTML में परिवर्तित करना चाहिए, या क्या मुझे बस HTML स्टोर करना चाहिए?
- 3. मुझे क्या करना चाहिए?
- 4. क्या मार्कडाउन ब्लॉकक्वाट में न्यूलाइन को संरक्षित करना चाहिए?
- 5. मुझे देखने में क्या करना चाहिए DidUnload?
- 6. क्या मुझे HttpRuntime.Cache का उपयोग करना चाहिए?
- 7. क्या मुझे बूटस्ट्रैप का उपयोग करना चाहिए?
- 8. क्या मुझे 'ईवेंट' लॉक करना चाहिए?
- 9. क्या मुझे रेल माइग्रेशन फ़्लैट करना चाहिए?
- 10. क्या मुझे स्कैला का अध्ययन करना चाहिए?
- 11. क्या मुझे jQuery.each() का उपयोग करना चाहिए?
- 12. क्या मुझे संदर्भक्यू पर सिंक्रनाइज़ करना चाहिए?
- 13. क्या मुझे इरनो सेट करना चाहिए?
- 14. सी # लॉगिंग। मुझे क्या उपयोग करना चाहिए?
- 15. मुझे क्या gacutil.exe का उपयोग करना चाहिए?
- 16. क्या मुझे jQuery.inArray() का उपयोग करना चाहिए?
- 17. क्या मुझे म्यूटेक्स का निपटान करना चाहिए?
- 18. क्या मुझे std :: stringstream preallocate करना चाहिए?
- 19. क्या मुझे सर्वलेट आउटपुटस्ट्रीम बंद करना चाहिए?
- 20. मुझे कॉलबैक को PHPDoc कैसे करना चाहिए?
- 21. क्या मुझे एल्गोरिदम के निष्पादन के लिए आवश्यक वस्तुओं को इंजेक्ट करना चाहिए? क्या मुझे सब कुछ इंजेक्ट करना चाहिए?
- 22. मुझे किस निर्भरता को इंजेक्ट करना चाहिए?
- 23. मैं मार्कडाउन को एचटीएमएल में कैसे परिवर्तित कर सकता हूं (क्या मुझे मौजूदा स्क्रिप्ट का उपयोग करना चाहिए)?
- 24. क्या मुझे स्थिर अस्थिर चर को सिंक्रनाइज़ करना चाहिए?
- 25. क्या मुझे स्ट्रिंग के प्रोटोटाइप को संशोधित करना चाहिए?
- 26. ओपनजीएल - क्या मुझे विशेषता/समान स्थानों को स्टोर करना चाहिए?
- 27. क्या मुझे अपने डेटाबेस में ओपनआईडी को एन्क्रिप्ट करना चाहिए?
- 28. क्या मुझे अपने आईओसी कंटेनर को समाहित करना चाहिए?
- 29. एओपी ... क्या मुझे ओओपी को अनदेखा करना चाहिए?
- 30. क्या मुझे सेवा() या doPost() को ओवरराइड करना चाहिए?