Question

Comment puis-je utiliser le Html.TextAreaForwithout encoder? Je sais qu'il est un risque de sécurité, mais j'ai une classe distincte qui assainit tout texte.

Exemple:

@ Html.TextAreaFor (model => model.PostBodyText, 10, 100, 1)

Je prévois de l'utiliser avec TinyMCE.

Cordialement RAVEN

UPDATE J'utilise le nouveau rasoir View Engine.

Était-ce utile?

La solution

Vous devrez rouler votre propre:

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

Bien sûr, en termes de sécurité cela pourrait être très dangereux que votre site est maintenant vulnérable aux attaques XSS. La question est pourquoi avoir une classe séparée qui désinfecte tout le texte quand vous pouvez simplement compter sur les aides HTML pour faire le travail pour vous?

Autres conseils

En option alternative, vous voudrez peut-être utiliser ValidateInput comme décrit ici . Un exemple dans le style MVC serait:

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

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

Je pense que plus est la façon d'aller MVC. Maintenant, votre contrôleur vous dit qu'il est un problème de sécurité dans cette méthode du contrôleur. Votre point de vue peut être une vue normale en utilisant des aides html etc. Notez que cela permet toutes sortes d'entrée, non filtrée. Il travaillera avec TinyMCE si .

// modifier

WOOPS Je vois que vous avez besoin d'ajouter

<httpRuntime requestValidationMode="2.0"/>

à webconfig aussi bien dans les nouvelles versions de MVC. Je suppose que ce pourrait ne pas être le chemin à parcourir.

Utilisez [AllowHtml] sur la propriété du modèle. Comme je l'ai appris dans dans ASP.NET MVC 3, comment puis-je obtenir le modèle en utilisant la syntaxe Razor dans Create () Voir .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top