it-swarm.com.de

Ein potenziell gefährlicher Request.Form-Wert wurde vom Client erkannt (textboxError = "<Responses> <Response ...")

Ich verwende ozeki ng SMS Gateway. Ich kann keine SMS an ein Mobiltelefon senden. Bitte helfen Sie mir, SMS über das Netz an das Mobiltelefon zu senden 

Ein potenziell gefährlicher Request.Form-Wert wurde vom Client erkannt (textboxError = "). Nachdem Sie diesen Wert festgelegt haben, können Sie die Anforderungsüberprüfung deaktivieren, indem Sie validateRequest =" false "in der Page-Direktive oder im Konfigurationsabschnitt festlegen. Dies ist jedoch stark Es wird empfohlen, dass Ihre Anwendung in diesem Fall alle Eingaben explizit überprüft. Weitere Informationen finden Sie unter http://go.Microsoft.com/fwlink/?LinkId=153133 .

Ausnahmedetails: System.Web.HttpRequestValidationException: Ein potenziell gefährlicher Request.Form-Wert wurde vom Client ermittelt (textboxError = "

UND meine cs-Datei ist

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
using System.Text.RegularExpressions;

public partial class _Default : System.Web.UI.Page 
{


    protected void Page_Load(object sender, EventArgs e)
    {
        textboxRecipient.Width = 400;
        textboxMessage.Width = 450;
        textboxMessage.Rows = 10;
        textboxError.Width = 400;
        textboxError.Rows = 5;

        textboxError.ForeColor = System.Drawing.Color.Red;
        textboxError.Visible = false;
        textboxError.Text = "";

        if (!Page.IsPostBack)
        {
            textboxRecipient.Text = "+441234567";
            textboxMessage.Text = "Hello World!";
        }
    }

    protected void buttonSendOnClick(object sender, EventArgs e)
    {
        //are required fields filled in:
        if (textboxRecipient.Text == "")
        {
            textboxError.Text += "Recipient(s) field must not be empty!\n";
            textboxError.Visible = true;
            return;
        }

        //we creating the necessary URL string:
        string ozSURL = "http://127.0.0.1"; //where Ozeki NG SMS Gateway is running
        string ozSPort = "9501"; //port number where Ozeki NG SMS Gateway is listening
        string ozUser = HttpUtility.UrlEncode("admin"); //username for successful login
        string ozPassw = HttpUtility.UrlEncode("admin"); //user's password
        string ozMessageType = "SMS:TEXT"; //type of message
        string ozRecipients = HttpUtility.UrlEncode(textboxRecipient.Text); //who will get the message
        string ozMessageData = HttpUtility.UrlEncode(textboxMessage.Text); //body of message

        string createdURL = ozSURL + ":" + ozSPort + "/httpapi" +
            "?action=sendMessage" +
            "&username=" + ozUser +
            "&password=" + ozPassw +
            "&messageType=" + ozMessageType +
            "&recipient=" + ozRecipients +
            "&messageData=" + ozMessageData;

        try
        {
            //Create the request and send data to Ozeki NG SMS Gateway Server by HTTP connection
            HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(createdURL);

            //Get response from Ozeki NG SMS Gateway Server and read the answer
            HttpWebResponse myResp = (HttpWebResponse)myReq.GetResponse();
            System.IO.StreamReader respStreamReader = new System.IO.StreamReader(myResp.GetResponseStream());
            string responseString = respStreamReader.ReadToEnd();
            respStreamReader.Close();
            myResp.Close();

            //inform the user
            textboxError.Text = responseString;
            textboxError.Visible = true;
        }
        catch (Exception)
        {
            //if sending request or getting response is not successful Ozeki NG SMS Gateway Server may do not run
            textboxError.Text = "Ozeki NG SMS Gateway Server is not running!";
            textboxError.Visible = true;
        }

    }
}

und meine asp Seite ist

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Ozeki NG SMS Gateway Message Sending Example</title>
</head>
<body>
    <center>
    <form id="smsdata" runat="server">
        <asp:Table id="smstable" runat="server" style="text-align:left; border-width:thin; border-color:Silver;" BorderStyle="Solid">
            <asp:TableRow>
                <asp:TableCell ColumnSpan="2">
                    <b>Compose a message:</b>
                    <br />
                    <br />
                </asp:TableCell>
            </asp:TableRow>
            <asp:TableRow>
                <asp:TableCell HorizontalAlign="Left" VerticalAlign="Top">
                    <asp:Label ID="labelRecipient" runat="server" Text="Recipient: "></asp:Label>
                </asp:TableCell>
                <asp:TableCell>
                    <asp:TextBox ID="textboxRecipient" runat="server"></asp:TextBox>
                </asp:TableCell>
            </asp:TableRow>
            <asp:TableRow>
                <asp:TableCell HorizontalAlign="Left" VerticalAlign="Top">
                    <asp:Label ID="labelMessage" runat="server" Text="Message Text: "></asp:Label>
                </asp:TableCell>
                <asp:TableCell>
                    <asp:TextBox ID="textboxMessage" runat="server" TextMode="MultiLine"></asp:TextBox>
                </asp:TableCell>
            </asp:TableRow>
            <asp:TableRow>
                <asp:TableCell ColumnSpan="2" HorizontalAlign="Center">
                    <asp:Button ID="buttonSend" runat="server" Text="Send Message" OnClick="buttonSendOnClick" />
                </asp:TableCell>
            </asp:TableRow>
            <asp:TableRow>
                <asp:TableCell ColumnSpan="2" HorizontalAlign="Center">
                    <asp:TextBox ID="textboxError" runat="server" BorderStyle="None" TextMode="MultiLine"></asp:TextBox>
                </asp:TableCell>
            </asp:TableRow>
        </asp:Table>
    </form>
    </center>
</body>
</html>
8
srihari

Ihr Problem ist, dass der Wert eines Ihrer Felder (textboxError) XML- oder HTML-Tags enthält, die standardmäßig nicht zulässig sind, um zu verhindern, dass Entwickler in ihren Anwendungen potenzielle Sicherheitsprobleme auftreten.

Die Lösung ist in der Fehlermeldung angegeben. Sie müssen validateRequest="false" entweder in der @Page-Direktive oben (in Ihrem Beispiel weggelassen) oder in web.config hinzufügen.

Wenn Sie .net 4 verwenden, müssen Sie von 2.0 wieder in den Validierungsmodus wechseln, indem Sie web.config geringfügig ändern und Folgendes hinzufügen:

<system.web>
    <httpRuntime requestValidationMode="2.0" />
</system.web>

Weitere Informationen zu requestValidationMode finden Sie in diesem MSDN-Artikel auf requestValidationMode .

18
Adrian Wragg

Ihr Problem ist, dass der Wert eines Ihrer Felder (textboxError) XML- oder HTML-Tags enthält, die standardmäßig nicht zulässig sind, um zu verhindern, dass Entwickler in ihren Anwendungen potenzielle Sicherheitsprobleme auftreten.

Die Lösung ist in der Fehlermeldung angegeben. Sie müssen hinzufügen 

  [HttpPost]
  [ValidateInput(false)]

Im Controller

1
Shaheer Ali

Ich habe die folgende Lösung gefunden, mit der Sie die Validierung nur für ein Feld deaktivieren können! (Ich würde es hassen, es für die ganze Seite zu deaktivieren)

vb.net:

Public Class UnvalidatedTextBox
    Inherits TextBox
    Protected Overrides Function LoadPostData(postDataKey As String, postCollection As NameValueCollection) As Boolean
        Return MyBase.LoadPostData(postDataKey, System.Web.HttpContext.Current.Request.Unvalidated.Form)
    End Function
End Class

c #:

public class UnvalidatedTextBox : TextBox
{
    protected override bool LoadPostData(string postDataKey, NameValueCollection postCollection)
    {
        return base.LoadPostData(postDataKey, System.Web.HttpContext.Current.Request.Unvalidated.Form);
    }
}

Verwenden Sie jetzt einfach <prefix:UnvalidatedTextBox id="test" runat="server" /> anstelle von <asp:TextBox und es sollte alle Zeichen zulassen (dies ist ideal für Kennwortfelder!)

1
Peter

das hat einfach für mich funktioniert ...

 [HttpPost, ValidateInput(false)]
 public ActionResult updateContact(FormModel model)
 {
    //contents
 } 
0
Adi_Pithwa