मैं सुरक्षित / sanitized HTML एक DB तालिका में सहेजा गया है।
मैं इस HTML सामग्री को रेजर व्यू में कैसे लिख सकता हूं?
यह हमेशा <
और ampersands जैसे पात्रों से बच जाता है &
।
मैं सुरक्षित / sanitized HTML एक DB तालिका में सहेजा गया है।
मैं इस HTML सामग्री को रेजर व्यू में कैसे लिख सकता हूं?
यह हमेशा <
और ampersands जैसे पात्रों से बच जाता है &
।
जवाबों:
अपनी सामग्री को नाम देना एक स्ट्रिंग के अंदर है mystring
...
आप उपयोग कर सकते हैं:
@Html.Raw(mystring)
वैकल्पिक रूप से आप अपने स्ट्रिंग को HtmlString
या किसी अन्य प्रकार में परिवर्तित कर सकते हैं IHtmlString
जो मॉडल या सीधे इनलाइन में लागू होता है और नियमित रूप से उपयोग होता है @
:
@{ var myHtmlString = new HtmlString(mystring);}
@myHtmlString
razor
वाक्य रचना के साथ नवीनतम एमवीसी 3 का उपयोग कर रहा हूं और Html.Raw
निश्चित रूप से मेरे लिए उपलब्ध है।
ASP.NET MVC 3 में आपको कुछ इस तरह करना चाहिए:
// Say you have a bit of HTML like this in your controller:
ViewBag.Stuff = "<li>Menu</li>"
// Then you can do this in your view:
@MvcHtmlString.Create(ViewBag.Stuff)
कभी-कभी कच्चे html का उपयोग करना मुश्किल हो सकता है। ज्यादातर XSS भेद्यता के कारण। यदि यह एक चिंता का विषय है, लेकिन आप अभी भी कच्चे HTML का उपयोग करना चाहते हैं, तो आप डरावने भागों को एन्कोड कर सकते हैं।
@Html.Raw("(<b>" + Html.Encode("<script>console.log('insert')</script>" + "Hello") + "</b>)")
का परिणाम
(<b><script>console.log('insert')</script>Hello</b>)
@MvcHtmlString.Create(ViewBag.Stuff)
डोमर द्वारा सुझाए अनुसार उपयोग करने के अलावा , मैं आपको सुझाव देता हूं कि आप एंटीएक्सएसएस लाइब्रेरी का भी उपयोग करें, जैसा कि सुझाव दिया गया है http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp -net.aspx
यह लगभग सभी संभावित XSS हमले स्ट्रिंग को एन्कोड करता है।
RazorEngine में टेम्पलेट फ़ंक्शंस का उपयोग करने के लिए पूरा उदाहरण (ईमेल पीढ़ी के लिए, उदाहरण के लिए):
@model SomeModel
@{
Func<PropertyChangeInfo, object> PropInfo =
@<tr class="property">
<td>
@item.PropertyName
</td>
<td class="value">
<small class="old">@item.OldValue</small>
<small class="new">@item.CurrentValue</small>
</td>
</tr>;
}
<body>
@{ WriteLiteral(PropInfo(new PropertyChangeInfo("p1", @Model.Id, 2)).ToString()); }
</body>
@Html.Raw()