it-swarm.asia

كتابة/إخراج سلاسل HTML unescaped

لقد تم حفظ HTML آمن/مطهر في جدول DB.

كيف يمكنني كتابة محتوى HTML هذا في عرض Razor؟

يهرب دائمًا أحرف مثل < وعلامات الضم إلى &amp;.

414
AGS

لنفترض أن المحتوى الخاص بك موجود داخل سلسلة باسم mystring...

يمكنك استخدام:

@Html.Raw(mystring)

بدلاً من ذلك ، يمكنك تحويل السلسلة إلى HtmlString أو أي نوع آخر يطبق IHtmlString في نموذج أو مضمّن مباشرةً ويستخدم @ العادي:

@{ var myHtmlString = new HtmlString(mystring);}
@myHtmlString
626
Lorenzo

في 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)
75
Tom Chantler

يمكنك استخدام

@{ WriteLiteral("html string"); }
58
Andrus

في بعض الأحيان قد يكون من الصعب استخدام لغة تأشير النص الفائق الخام. في الغالب بسبب ضعف XSS. إذا كان هذا مصدر قلق ، لكنك لا تزال ترغب في استخدام html raw ، يمكنك تشفير الأجزاء المخيفة.

@Html.Raw("(<b>" + Html.Encode("<script>console.log('insert')</script>" + "Hello") + "</b>)")

النتائج في

(<b>&lt;script&gt;console.log('insert')&lt;/script&gt;Hello</b>)
10
Travis J

يمكنك وضع السلسلة في viewdata في جهاز التحكم مثل هذا:

 ViewData["string"] = DBstring;

ثم اتصل بهذا العرض في طريقة العرض مثل هذا:

@Html.Raw(ViewData["string"].ToString())
4
Ajay

بصرف النظر عن استخدام @MvcHtmlString.Create(ViewBag.Stuff) كما اقترح Dommer ، أقترح عليك أيضًا استخدام AntiXSS library كما هو مقترح phill http://haacked.com/archive/2010/04/06/using-antixss-as-the- برنامج التشفير الافتراضي لـ asp-net.aspx

إنه يشفر تقريبا كل سلسلة هجوم XSS الممكنة.

2
ZeNo