1

顧客がサイトから情報を要求するためのフォームを作成しました。次に、フォームは Webmail.Send を使用してメールを送信します。ユーザーが HTML 開始タグの一部または全部、つまり「<h1」または「<h1>」を入力しようとすると、サイトはエラーをスローします。WebMatrix を使用してサイトを開発しましたが、Html.Encode() を使用してこの問題を解決しようとしています。Html.Encode("<h1>") でハードコーディングすると、すべてがうまくいき、電子メールが送信され、HTML タグが電子メールで見栄えがします。変数 Html.Encode(firstName) を使用しようとすると、ユーザーが html 開始タグの一部またはすべてを入力すると、サイトがクラッシュします。ユーザーが html のように見えない何かを入力した場合、すべて問題ありません。つまり、「Steve」です。以下は、私が問題を抱えているコードです。

    var customerEmail = Request["customerEmail"];
    var firstName = Request["firstName"];
    var lastName = Request["lastName"];
    var phoneNumber = Request["phoneNumber"];
    var customerRequest = Request["customerRequest"];
    var rAddress = Request["rAddress"];
    var rCity = Request["rCity"];
    var rState = Request["rState"];
    var rZip = Request["rZip"];

    try
        {
            WebMail.Send(to:"request@yourdomain.com", subject: "Request from " + customerEmail, body: 
            "Request:<br>_____________________________________<br><br>" +
            customerRequest + "<br><br>Contact Info:<br>_____________________________________<br><br>" + Html.Encode(firstName)  + " " + lastName + "<br>" + rAddress + 
            "<br>" + rCity + " " + rState + " " + rZip + "<br>" + phoneNumber + "<br>" + customerEmail, replyTo: customerEmail);
        }
    catch (Exception ex )
        {
            <text>@ex</text>
        }

すべての入力で問題が発生する可能性があることはわかっていますが、この最初の入力が分かれば簡単に修正できます。

4

1 に答える 1

2

ユーザーがフォーム送信の一部として HTML を投稿できるようにする場合はRequest.Unvalidated()、フォーム フィールドの値を参照して、ASP.NET 要求の検証が開始されないようにする必要があります (その結果、報告したエラー メッセージが表示されます)。

var firstName = Request.Unvalidated("firstName");
var lastName = Request.Unvalidated("lastName");
于 2013-03-09T07:54:27.667 に答える