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 Discussion :

Problème textarea et html


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2011
    Messages : 60
    Par défaut Problème textarea et html
    Bonjour,

    Dans le cadre du développement d'une application web, j'ai besoin d'écrire du code html dans des fichiers txt. Jusque là, pas de soucis, je lis et écris dans le fichier, etc. (avec du texte brut)

    Problème: dès que j'ajoute des balises html à mon texte, une erreur de sécurité m'est générée.

    J'ai le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <%@ Page Title="Web Administrator" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
        CodeBehind="Mail.aspx.cs" Inherits="Database_Web_Administrator.Mail" ValidateRequest="false" %>
     
    [...]
     
    <textarea id="file_content" name="file_content" rows="15" cols="85"
        runat="server" lang="fr-fr"></textarea>
    couplé à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    protected void update_file_content()
            {
                //Write over file
                #region
                try
                {
                    string url = String.Concat("D:/space/", project, "/Template/Mail/", file, ".txt");
                    StreamWriter writer = new StreamWriter(url);
                    writer.Write(file_content.Value);
                    writer.Close();
                }
                catch (Exception ex)
                {
                    file_content.Value = ex.ToString();
                }
                #endregion
            }
    J'ai essayé HtmlEncode/HtmlDecode mais sans succès.

    Une idée? La solution?

    Merci d'avance.
    Max

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    Il faut définir la propriété ValidateRequest à False au niveau de la page, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" ValidateRequest="false" %>
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Matt07 Voir le message
    Il faut définir la propriété ValidateRequest à False au niveau de la page, comme ceci
    Par contre attention, dans ce cas il faut prendre toi-même des mesures pour t'assurer que seul du code "inoffensif" est posté... par exemple vérifier qu'il n'y a pas de balises <script>.

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Par contre attention, dans ce cas il faut prendre toi-même des mesures pour t'assurer que seul du code "inoffensif" est posté... par exemple vérifier qu'il n'y a pas de balises <script>.
    Effectivement, merci pour la précision Thomas

    En relisant le premier post de ce thread, je me suis rendu compte que la balise ValidateRequest semble déjà être sur False... Le problème n'est peut-être donc pas à ce niveau.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2011
    Messages : 60
    Par défaut
    En effet, ValidateRequest est déjà renseigné à False.

    Si ça peut aider, l'erreur qui m'est générée:
    Server Error in '/' Application.
    A potentially dangerous Request.Form value was detected from the client (ctl00$MainContent$file_content="...demande:
    <ul>
    <li><a href...").
    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.

    Exception Details: System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (ctl00$MainContent$file_content="...demande:
    <ul>
    <li><a href...").

    Source Error:

    [No relevant source lines]


    Source File: c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\66759691\a833601e\App_Web_mail.aspx.cdcab7d2.l4dwojza.0.cs Line: 0

    Stack Trace:

    [HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (ctl00$MainContent$file_content="...demande:
    <ul>
    <li><a href...").]
    System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection) +8734868
    System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection) +122
    System.Web.HttpRequest.get_Form() +114
    System.Web.HttpRequest.get_HasForm() +8900239
    System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull) +97
    System.Web.UI.Page.DeterminePostBackMode() +69
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +8431
    System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +253
    System.Web.UI.Page.ProcessRequest() +78
    System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
    System.Web.UI.Page.ProcessRequest(HttpContext context) +49
    ASP.mail_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\66759691\a833601e\App_Web_mail.aspx.cdcab7d2.l4dwojza.0.cs:0
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75


    Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bah la solution est dans le message d'erreur... comme bien souvent

    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.

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

Discussions similaires

  1. Problème applet avec HTML intégré
    Par NewBie_of_rostand dans le forum JBuilder
    Réponses: 4
    Dernier message: 15/03/2006, 11h48
  2. [FLASH MX] Problème de "Publish HTML"
    Par Gwenouille dans le forum Flash
    Réponses: 3
    Dernier message: 26/02/2006, 11h53
  3. [Mail] Problème mail en html
    Par Vinzius dans le forum Langage
    Réponses: 6
    Dernier message: 10/09/2005, 22h51
  4. problème de validation HTML
    Par silversky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 05/09/2005, 13h47
  5. [html][xsl]Problème valeur attribut html
    Par beho dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/04/2005, 13h37

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