سؤال

كيف يمكنني استخدام html.textareaforwithout ترميزه؟ أعلم أنه خطر أمني ولكن لدي فئة منفصلة تعقيم أي نص.

مثال:

@html.textareafor (model => model.postbodytext ، 10 ، 100 ، 1)

أخطط لاستخدامه مع Tinymce.

تحياتي الغراب

تحديثأنا أستخدم محرك Razor View الجديد.

هل كانت مفيدة؟

المحلول

ستحتاج إلى لف الخاص بك:

<textarea cols="100" id="PostBodyText" name="PostBodyText" rows="10">
    @MvcHtmlString.Create(Model.PostBodyText)
</textarea>

بالطبع فيما يتعلق بالأمان ، قد يكون هذا أمرًا خطيرًا للغاية لأن موقعك أصبح الآن عرضة لهجمات XSS. لذا فإن السؤال هو السبب في وجود فئة منفصلة تقوم بتطهير جميع النصوص عندما يمكنك ببساطة الاعتماد على مساعدي HTML للقيام بالمهمة نيابة عنك؟

نصائح أخرى

كخيار بديل قد ترغب في استخدام ValativeInput كما هو موضح هنا. مثال على نمط MVC سيكون:

[ValidateInput(false)]
public ActionResult Method(){
     return View()
}

[ValidateInput(false)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(){
    // your stuff here
    RedirectToAction("index"); // or something 
}

أعتقد أن هذا هو أكثر طريقة MVC للذهاب. الآن يخبرك وحدة التحكم الخاصة بك أن هناك مشكلة أمان في طريقة وحدة التحكم هذه. يمكن أن يكون عرضك أي طريقة عرض طبيعية باستخدام مساعدين HTML وما إلى ذلك. لاحظ أن هذا يتيح جميع أنواع المدخلات ، وليس ترشيحه. ستعمل مع Tinymce رغم ذلك.

//تعديل

Woops أرى أنك بحاجة إلى إضافة

<httpRuntime requestValidationMode="2.0"/>

إلى WebConfig وكذلك في إصدارات جديدة من MVC. أعتقد أنه قد لا يكون الطريق للذهاب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top