La validation a détecté une entrée client dangereuse - publication de TinyMCE dans ASP.NET

StackOverflow https://stackoverflow.com/questions/1225472

  •  22-07-2019
  •  | 
  •  

Question

Je reçois cette erreur lorsque je poste depuis TinyMCE dans une vue ASP.NET MVC.

Erreur:

  

La validation de la demande a détecté une valeur d'entrée client potentiellement dangereuse et le traitement de la demande a été abandonné

À partir de Google, il est simplement ajouté une requête validateRequest dans la directive Page en haut, mais je reçois TOUJOURS cette erreur. Comme vous pouvez le constater, mon code est affiché ci-dessous:

<%@ Page validateRequest="false" Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
Était-ce utile?

La solution

Utilisez le décorateur [ValidateInput (false)] .

Vous voudrez alors écrire une méthode HTMLEncode pour la rendre sûre.

Faites-moi savoir si vous souhaitez que je publie celui que j'utilise.

Ajout du code que j'utilise

    public static class StringHelpers
{
    public static string HtmlEncode(this string value)
    {
        if (!string.IsNullOrEmpty(value))
        {
            value = value.Replace("<", "&lt;");
            value = value.Replace(">", "&gt;");
            value = value.Replace("'", "&apos;");
            value = value.Replace(@"""", "&quot;");
        }
        return value;
    }

    public static string HtmlDecode(this string value)
    {
        if (!string.IsNullOrEmpty(value))
        {
            value = value.Replace("&lt;", "<");
            value = value.Replace("&gt;", ">");
            value = value.Replace("&apos;", "'");
            value = value.Replace("&quot;", @"""");
        }

        return value;
    }
}

Autres conseils

Essayez cette solution. ajouter simplement au contrôle TinyMce

tinyMCE.init({
...
encoding : "xml"
});

http://wiki.moxiecode.com/index.php/TinyMCE : Configuration / encodage

http://blog.tentaclesoftware.com/archive/2010 /07/22/96.aspx

Essayez d'utiliser l'attribut [AllowHtml] dans votre modèle.

class MyModel{
 [AllowHtml]
 public string Content{get;set;}
}

De manière contrariante, dans la version 4 de tinymce, ils semblent avoir supprimé l’option encoding: xml.

J'ai fini par utiliser une fonction de codage HTML javascript issue de cette réponse , et ainsi de suite. mon bouton d'envoi J'encode le contenu de la zone de texte avant l'envoi du formulaire, à l'aide des méthodes getContent et setContent de tinymce

J'ai eu le même problème. Je ne voulais pas désactiver la fonctionnalité de validation ASP.NET MVC. J'ai donc continué à chercher jusqu'à ce que je parvienne à cette solution:

Au niveau du plugin tinyMCE, codez votre contenu (j'utilise l'ancienne version)

tinyMCE.init({
   ...
   encoding: "xml"
});

Et après cela, je n'ai plus eu l'erreur de validation de l'application. Puis, lorsque je modifiai mon formulaire, j’ai eu un autre problème: le code venait avec les balises HTML

<strong>My input value</strong>

au lieu de cela

Ma valeur d'entrée

J'ai donc dû décoder le code HTML de ce champ pour obtenir mes valeurs sur le contrôleur, comme ceci:

...    
entity.field = HttpUtility.HtmlDecode(entity.field);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top