ASP.NET MVC3, Html.TextAreaFor ohne kodiert?
-
27-09-2019 - |
Frage
Wie kann ich die Html.TextAreaForwithout es kodiert? Ich weiß, dass es ein Sicherheitsrisiko ist, aber ich habe eine eigene Klasse, dass saniert einen beliebigen Text.
Beispiel:
@ Html.TextAreaFor (Typ => model.PostBodyText, 10, 100, 1)
Ich plane es mit TinyMCE zu verwenden.
Viele Grüße Raven
UPDATE Ich bin die neue Razor Ansicht Engine.
Lösung
Sie müssen Ihre eigene Rolle:
<textarea cols="100" id="PostBodyText" name="PostBodyText" rows="10">
@MvcHtmlString.Create(Model.PostBodyText)
</textarea>
Natürlich in Bezug auf Sicherheit könnte dies sehr gefährlich sein, wie Sie Ihre Website jetzt anfällig für XSS-Angriffe ist. Die Frage ist also, warum eine eigene Klasse mit, dass saniert den gesamten Text, wenn Sie einfach auf den HTML-Helfer verlassen kann die Arbeit für Sie tun?
Andere Tipps
Als Alternative könnten Sie ValidateInput hier verwenden Wanna . Ein Beispiel in MVC Stil wäre:
[ValidateInput(false)]
public ActionResult Method(){
return View()
}
[ValidateInput(false)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(){
// your stuff here
RedirectToAction("index"); // or something
}
Ich denke, dass mehr der MVC Weg zu gehen. Jetzt ist Ihr Controller sagt Ihnen, es wird in diesem Controller-Methode ein Sicherheitsproblem. Ihre Ansicht jeder normale Ansicht sein kann mit HTML Helfer usw. Beachten Sie, dass diese alle möglichen Eingabe ermöglicht, nicht gefiltert. Es wird mit TinyMCE arbeiten, obwohl .
// edit
Woops Ich sehe, Sie hinzufügen müssen
<httpRuntime requestValidationMode="2.0"/>
zu webconfig als auch in neuen Versionen von MVC. Denke, es ist vielleicht nicht der richtige Weg sein.
Mit [AllowHtml]
auf dem Modell Eigentum. Wie ich lernte in in ASP.NET MVC 3, wie ich auf dem Modell in einem erstellen mit Razor-Syntax get () View? .