none
[REGLE] Requête potentiellement dangereuse RRS feed

  • Question

  • Bonjour tout le monde,

    Dans la base Northwind, table Customers, le client de clef ANTON, s'appelle, dans le champ CompanyName, "Antonio Moreno Taquería", ce qui est stocké sous la forme "Antonio Moreno Taquería", du moins est-ce ainsi qu'on le reçoit dans une zone de texte lorsqu'on la renseigne ainsi

         protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtCode.Text = GridView1.SelectedDataKey.Value.ToString();
            txtNomClient.Text = GridView1.SelectedRow.Cells[2].Text.ToString();
        }
    étant entendu que GridView1 est remplie par une requête basée sur les champs  CustomerID et CompanyName, lus par un SqlDataSource.

    Donc, dans txtNomClient, j'ai bien "Antonio Moreno Taquería", qui me confirme que j'ai bien choisi le bon client, bien que j'aurais préféré voir "Antonio Moreno Taquería".

    Or, lorsque je clique sur le bouton qui doit envoyer cela sur un autre formulaire, je me vois opposer le formulaire d'exception non gérée.

    Détails de l'exception: System.Web.HttpRequestValidationException: Une valeur Request.Form potentiellement dangereuse a été détectée à partir du client (txtNomClient="...eno Taquería").

    "Aucun code approprié" - pas de numéro de ligne exploitable.

    Il me vient alors une question : quezaco ?

     * * * * * * * * * * * * * * * * * * * * * *

    Voici le code du bouton :

        protected void Button1_Click(object sender, EventArgs e)
        {
            txtNomClient.Text = "";
            if (GridView1.SelectedDataKey != null)
            {
                txtCode.Text = GridView1.SelectedDataKey.Value.ToString();
                try
                {
                    txtNomClient.Text = GridView1.SelectedRow.Cells[2].Text.ToString();
                }
                catch (Exception eb1)
                {
                    System.Diagnostics.Debug.Print(eb1.Message);
                }
               
                System.Diagnostics.Debug.Print(this.GridView1.SelectedDataKey.Value.ToString());
                //Session["CustId"] = GridView1.SelectedDataKey.Value.ToString();
                Server.Transfer("CommandesUnClient.aspx?CustId=" + GridView1.SelectedDataKey.Value.ToString());
            }
            else
            {
                txtCode.Text = "Vous n'avez sélectionné";
                txtNomClient.Text = "aucun client";
            }
        }

    Peut-être voulez-vous aussi la bouillie infâme qui vaut son pesant de cacahuètes :

    [HttpRequestValidationException (0x80004005): Une valeur Request.Form potentiellement dangereuse a été détectée à partir du client (txtNomClient="...eno Taquería").]
       System.Web.HttpRequest.ValidateString(String s, String valueName, String collectionName) +8725434
       System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, String collectionName) +111
       System.Web.HttpRequest.get_Form() +129
       System.Web.HttpRequest.get_HasForm() +8725543
       System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull) +97
       System.Web.UI.Page.DeterminePostBackMode() +63
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6785
       System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +242
       System.Web.UI.Page.ProcessRequest() +80
       System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
       System.Web.UI.Page.ProcessRequest(HttpContext context) +49
       ASP.default_aspx.ProcessRequest(HttpContext context) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\northwind1\4c5d4367\a620129f\App_Web_fssnxxt3.2.cs:0
       System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

     

    Alors je sais bien, j'ai essayé de truander le navigateur en mettant un guillemet sous forme de code ASCII, mais ... j'avoue que je ne vois pas trop par où prendre le problème.

     





    • Modifié Gloops mardi 31 mai 2011 09:49
    lundi 30 mai 2011 15:25

Réponses

  • C'est vrai que sur ce coup-là, je déconne.

    Il fallait mettre :

            txtNomClient.Text = Server.HtmlDecode(GridView1.SelectedRow.Cells[2].Text);

    • Marqué comme réponse Gloops mardi 31 mai 2011 09:49
    mardi 31 mai 2011 09:49