আমি নিরাপদে / স্যানিটাইজড এইচটিএমএল একটি ডিবি টেবিলে সংরক্ষণ করেছি।
আমি কীভাবে এই এইচটিএমএল সামগ্রীটি একটি রেজার ভিউতে লেখা থাকতে পারি?
এটি সর্বদা ভালো অক্ষরগুলি থেকে পালিয়ে যায় <
এবং এম্পারসেন্ড করে &
।
আমি নিরাপদে / স্যানিটাইজড এইচটিএমএল একটি ডিবি টেবিলে সংরক্ষণ করেছি।
আমি কীভাবে এই এইচটিএমএল সামগ্রীটি একটি রেজার ভিউতে লেখা থাকতে পারি?
এটি সর্বদা ভালো অক্ষরগুলি থেকে পালিয়ে যায় <
এবং এম্পারসেন্ড করে &
।
উত্তর:
মনে করুন আপনার সামগ্রীটি নামের একটি স্ট্রিংয়ের ভিতরে রয়েছে mystring
...
তুমি ব্যবহার করতে পার:
@Html.Raw(mystring)
বিকল্পভাবে আপনি আপনার স্ট্রিংকে রূপান্তর করতে পারেন HtmlString
বা অন্য কোনও ধরণের যা IHtmlString
মডেল বা সরাসরি ইনলাইন প্রয়োগ করে এবং নিয়মিত ব্যবহার করতে পারেন @
:
@{ var myHtmlString = new HtmlString(mystring);}
@myHtmlString
razor
সিনট্যাক্স সহ সর্বশেষতম এমভিসি 3 ব্যবহার করছি এবং Html.Raw
অবশ্যই আমার কাছে উপলভ্য।
এএসপি.নেট এমভিসি 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.Raw("(<b>" + Html.Encode("<script>console.log('insert')</script>" + "Hello") + "</b>)")
ফলাফল স্বরূপ
(<b><script>console.log('insert')</script>Hello</b>)
এছাড়াও ব্যবহার করা থেকে @MvcHtmlString.Create(ViewBag.Stuff)
যেমন Dommer দ্বারা প্রস্তাবিত, আমি সুপারিশ করছি ব্যবহার করা AntiXSS হিসাবে প্রস্তাব গ্রন্থাগার phill http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp -net.aspx
এটি প্রায় সমস্ত সম্ভাব্য এক্সএসএস আক্রমণ স্ট্রিংকে এনকোড করে।
রেজারইঙ্গিনে টেম্পলেট ফাংশন ব্যবহারের জন্য সম্পূর্ণ উদাহরণ (উদাহরণস্বরূপ ইমেল তৈরির জন্য):
@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()