2010-06-20 7 views
10

मैं अपने मौजूदा RadEditor की बजाय अपने प्रोजेक्ट में डब्लूएमडी का उपयोग कर रहा हूं। मैं डेटा को स्टोर और पुनर्प्राप्त करने के तरीके पर कुछ पोस्ट पढ़ रहा हूं, और मैं यह सुनिश्चित करना चाहता हूं कि आगे बढ़ने से पहले मुझे अवधारणा सही हो।एसक्यूएल सर्वर में डब्लूएमडी इनपुट/मार्कडाउन स्टोर करने और बाद में प्रदर्शित करने का सबसे अच्छा तरीका क्या है?

यदि मेरा शोध सही है, तो मुझे यह करना चाहिए कि मुझे क्या करना चाहिए।

  1. मैं संपादक डेटा दो बार (एक बार HTML के रूप में और एक बार Markdown के रूप में) संग्रहीत करना चाहिए
  2. मैं इसे भंडारण से पहले एक Whitelist के माध्यम से एचटीएमएल चलाना चाहिए।
  3. मुझे एचटीएमएल को एंटीएक्सएसएस के माध्यम से बाहर चला जाना चाहिए (प्रदर्शित करने से पहले)
  4. मुझे संपादन के लिए मार्कडाउन को दोबारा बदलने के लिए केवल मार्कडाउन डेटा का उपयोग करना चाहिए।

किसी को भी पुष्टि कर सकते हैं या यदि यह सही है इनकार करते हैं, और यह भी विषय पर किसी भी उपयोगी इनपुट जोड़ने?

संदर्भ
Reformat my code: Sanitize Html
StackOverflow: how do you store the markdown using wmd in asp net
StackOverflow: sanitize html before storing in the db or before rendering antixss library
StackOverflow: store html entities in database or convert when retrieved

उत्तर

8

मैं एक ब्लॉग इंजन में मार्कडाउन को कार्यान्वित कर रहा हूं जिसे मैं लिख रहा हूं (जो ब्लॉग इंजन नहीं लिखता है?), और मैंने क्लाइंट के लिए लिखे गए कई अनुकूलित सीएमएस में मार्कडाउन भी लागू किया है।

मैं इसे कैसे स्टैक ओवरफ़्लो टीम यह करता है बिल्कुल उसी प्रकार कार्य करें:

  1. मैं ग्राहक के पक्ष संपादक के रूप में wmd.js का उपयोग करें।
  2. मैं MarkdownSharp सर्वर साइड प्रोसेसिंग का उपयोग करता हूं।
  3. मैं प्रसंस्करण HTML को कवर करने के लिए Jeff Atwood's Sanitize HTML का उपयोग करता हूं।

    :

यहां कुछ संसाधन है कि Markdown के बारे में बात कर रहे हैं 210

निष्कर्ष: किसी

  1. मैं रूप में प्रस्तुत की गई थी में पोस्ट की दुकान; यह MarkdownSharp का उपयोग करके प्रदर्शित किया गया है।
  2. मैं जेफ एटवुड के दृष्टिकोण (आउटपुट पर, इनपुट पर नहीं) का उपयोग करके HTML को स्वच्छ करता हूं।
  3. मैं एक्सएसएस और एक्सएसआरएफ से निपटने के लिए एएसपी.नेट एमवीसी 'सर्वोत्तम प्रथाओं' (एक अत्यधिक व्यक्तिपरक शब्द) का उपयोग करता हूं।
+0

दो प्रश्न ... 1) क्यों आउटपुट पर sanitize और इनपुट नहीं? और 2) ये एमवीसी "सर्वोत्तम प्रथाओं 'क्या हैं ... पढ़ने के लिए कोई आलेख है? –

+1

@rock आप आउटपुट पर sanitize क्योंकि आप डेटाबेस में उपयोगकर्ता क्या डालते हैं उलझाना नहीं चाहते हैं। आउटपुट पर sanitizing द्वारा आप संरक्षित यदि आप कभी भी इनपुट को स्वच्छ करने के लिए उपयोग कर रहे हैं, तो मूल पाठ को बदलने का निर्णय लेते हैं। रॉब कॉनरी, स्कॉट हंसेलमैन, फिल हैक और स्कॉट गुथरी द्वारा "एएसपी.नेट एमवीसी 1.0" देखें। इसके अलावा, फिल का ब्लॉग , http://haacked.com एमवीसी वस्तुओं के लिए एक महान संसाधन है। –

+0

तो यदि कोई उपयोगकर्ता आपके डेटाबेस में जावास्क्रिप्ट या दुर्भावनापूर्ण बकवास जैसी सामग्री सबमिट करता है तो आप चिंतित नहीं हैं? इसके अलावा, इनपुट कम सिस्टम लोड पर एक बार sanitizing नहीं है प्रत्येक आउटपुट पर sanitizing? –

0

तो Markdown पीछे IDEs में से एक है कि यह उत्पादन करेगा "सुरक्षित" एचटीएमएल - अलग एन्कोडिंग के लिए कोई ज़रूरत नहीं होना चाहिए।

अधिक आम तौर पर मैं डेटाबेस में "कच्चे" डेटा को संग्रहीत करने या इसे संचरित किए बिना संग्रहीत करने की अनुशंसा करता हूं। आपको जितना संभव हो सके प्रतिपादन बिंदु के करीब हमेशा स्वच्छता या परिवर्तन करना चाहिए - यह अधिक लचीलापन देता है (ओह, अचानक मुझे आरएसएस या जेएसओएन के रूप में प्रस्तुत करने की आवश्यकता है। अरे, मैं नहीं कर सकता क्योंकि मैं HTML के लिए पूर्व-स्वरूपित हूं) और, चाहिए sanitiser या renderer अद्यतन किया गया है आप डेटा के हर टुकड़े पर अद्यतन के प्रभाव देखते हैं।

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

+0

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

+0

आह सच नहीं है। डब्लूएमडी का कार्यान्वयन करता है, लेकिन मार्कडाउन स्वयं को अपने टैग तक सीमित होना चाहिए, और इसे अपने स्वयं के वैध एक्सएचटीएमएल का उत्पादन करना चाहिए। बेशक ग्रबर की प्रलेखन की कमी या किसी भी spec इस के साथ मदद नहीं करता है। – blowdart

+0

"तो मार्कडाउन के पीछे की ओर से एक यह है कि यह" सुरक्षित "एचटीएमएल का उत्पादन करेगा" - इसका मतलब यह है कि डब्लूएमडी इंजन पहले से ही असुरक्षित एचटीएमएल (स्क्रिप्ट्स) –

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

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