IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

probleme d'enregistrement de balise HTML dans ma base


Sujet :

ASP.NET MVC

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2011
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 101
    Par défaut probleme d'enregistrement de balise HTML dans ma base
    Bonjour,

    Je suis sur une appli MVC3 et je souhaiterais récupérer un mail en gardant la mise en forme(surtout pour les tableaux, couleurs,etc). J'ai donc utilisé l'api de yahoo basée sur javascript:
    http://developer.yahoo.com/yui/editor/.

    Du coup je peux recuperer mon email sous forme HTML. Le probleme survient lors de l'insertion en base. J'obtiens l'erreur suivante:
    A potentially dangerous Request.Form value was detected from the client (email="<p class="MsoNormal"...").
    Description: Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. To allow pages to override application request validation settings, set the requestValidationMode attribute in the httpRuntime configuration section to requestValidationMode="2.0". Example: <httpRuntime requestValidationMode="2.0" />. After setting this value, you can then disable request validation by setting validateRequest="false" in the Page directive or in the <pages> configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case. For more information, see http://go.microsoft.com/fwlink/?LinkId=153133.
    N'ayant pas de HttpRuntime, j'ai modifié dans mon webCOnfig la balise runtime(sait-on jamais ). Ainsi j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <runtime requestValidationMode="2.0" >
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    et plus haut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        <pages validateRequest="false">
          <namespaces>
            <add namespace="System.Web.Helpers" />
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Routing" />
            <add namespace="System.Web.WebPages"/>
          </namespaces>
        </pages>
    Mais j'ai toujours la même erreur...

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Par défaut
    Bonjour,

    L'utilisation d'un encodage (HtmlEncode) avant l'insert en base devrait régler le problème.

    De cette façon on est sûr de manipuler du texte et de ne pas exécuter du code malicieux qui traînerait dans le corps du mail

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2011
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 101
    Par défaut
    Salut, merci pour ta reponse. J'ai donc encoder mon html dans le controller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     newDem.EtatValue = 0;
                newDem.Email = Server.HtmlEncode(email);
                newDem.ResponsableID = null;
                newDem.VendeurID = IdVendeur; 
                db.Demandes.Add(newDem);
                db.SaveChanges();
    malheureusement j'ai la même erreur. Cela signifie t'il que la vérification se fait plus en amont, dès la soumission du formulaire? Il faudrait donc que j'encode plus tôt mon html, mais je ne pense pas pouvoir le faire dans la vue

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Par défaut
    Hmm, je n'ai pas du prendre le problème dans le bon sens.

    D'ailleurs l'enregistrement en lui même en base ne devrait pas poser de problème, ce n'est pas plus tôt que l'exception est générée ?

    Par défaut, MVC n'autorise pas le post de données contenant du markup Html. Il ne valide pas ton post et génère une exception.

    Dans ton cas, tu veux justement permettre la saisie de code html, il faut donc désactiver le validation request.

    Tu ne peux pas utiliser la directive <%@ Page ValidateRequest=”false” %> ni le mettre dans le webconfig comme avec les webforms me semble t'il.

    Par contre tu peux placer un attribut "ValidateInput" sur l'action qui récupère les données de ton post pour le désactiver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [ValidateInput(false)]
    public ActionResult ActionName()
    {
        if (!ModelState.IsValid)
    ...

    ça m'apprendra à lire en diagonale

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2011
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 101
    Par défaut
    C'est exactement ça! merci beaucoup,simple et efficace. J'ai maintenant mon html qui s'enregistre en base. Du coup, j'ai fait un fichier HTML test dans lequel j'ai collé l'enregistrement: j'ai bien mon tableau qui s'affiche, donc le html enregistré est bon. Par contre, dans mon application, quand je veux afficher la variable, cette derniere est afficher comme du plan text.
    Dans ma vue, j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div class="clientEmail" >
    @Html.Encode(Model.Email)
    </div>
    J'ai aussi essayé directement le @Model.Email , mais même résultat.Par la suite, je me suis dit qu'il fallait encoder le HTML avant de le passer à la vue, donc directement dans le controller, j'ai fait un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    laDemande.Email = Server.HtmlEncode(laDemande.Email);
    sans succès.
    Donc comment puis-je dire au browser d'interpréter les balises HTML?

    Encore merci pour la DataAnnotation.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 27
    Par défaut
    Salut,

    Essaye ceci,

    dans ton Controller:
    et dans ta vue:

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2011
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 101
    Par défaut
    Salut, merci de te pencher sur mon probleme.
    d'autant que tu l'as résolus en fait...ça marche nickel
    Je n'ai pas bien saisi la subtilité du encode/decode, mais bon. Le raw me permet bien d'avoir mon tableau HTML avec les couleurs et tout et tout jolie.

    Merci à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/05/2011, 12h14
  2. Réponses: 9
    Dernier message: 19/08/2010, 12h17
  3. [HTML] Plusieurs balises <html> dans une seule page???
    Par v4np13 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 02/07/2005, 17h37
  4. [XSL] Balise html dans un XML
    Par Ludo_xml dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 13/06/2005, 13h55
  5. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo