2009-08-04 4 views
6

TinyMCEからASP.NET MVCビューに投稿するとこのエラーが発生します。Validationが危険なクライアント入力を検出しました - ASP.NETのTinyMCEからの投稿

エラー:

Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted

グーグルから、それはちょうど私がやった一番上のPageディレクティブでのvalidateRequestを追加すると言うが、私はまだ、このエラーが発生します。ご覧のとおり、私のコードは以下の通りです。

<%@ Page validateRequest="false" Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 

答えて

5

デコレータ[ValidateInput(false)]を使用してください。

次に、HTMLEncodeメソッドを作成して安全にしたいと考えています。

私が使用しているものを投稿したい場合はお知らせください。

は、私は、このソリューションをお試しください

public static class StringHelpers 
{ 
    public static string HtmlEncode(this string value) 
    { 
     if (!string.IsNullOrEmpty(value)) 
     { 
      value = value.Replace("<", "&lt;"); 
      value = value.Replace(">", "&gt;"); 
      value = value.Replace("'", "&apos;"); 
      value = value.Replace(@"""", "&quot;"); 
     } 
     return value; 
    } 

    public static string HtmlDecode(this string value) 
    { 
     if (!string.IsNullOrEmpty(value)) 
     { 
      value = value.Replace("&lt;", "<"); 
      value = value.Replace("&gt;", ">"); 
      value = value.Replace("&apos;", "'"); 
      value = value.Replace("&quot;", @""""); 
     } 

     return value; 
    } 
} 
+0

あなたはそれは素晴らしい – leora

+0

おかげだろう投稿することができた場合..トン帽子はうまくいった。とにかく既存のHTMLページからテキストエリアを事前に作成することはありますか? – leora

+0

あなたは[私]の意味をあまり理解していません。ここでスクリーンスクレイピングを話しているのですか... – griegs

5

を追加します。

class MyModel{ 
[AllowHtml] 
public string Content{get;set;} 
} 
0

annoyingly tinymceのバージョン4では、encoding:xmlオプションを削除したようです。

私はthis answerからjavascriptのHTMLエンコーディング機能を使用して終了し、フォームが、私は同じ問題を抱えていた

+1

私は、あなたのサイトに直接ポストすることから悪党を防ぐことはできないので、クライアント側のエンコーディングに依存するのは危険です。サーバー上の入力もサニタイズする必要があります。 –

+0

はい、常に覚えておくことが重要です –

0

のTinyMCEののgetContentとのsetContentメソッドを使用して、提出する前に、私のボタンを提出の上、私はテキストエリアの内容を符号化します。

tinyMCE.init({ 
    ... 
    encoding: "xml" 
}); 
(私は古いバージョンを使用しています)TinyMCEのプラグインコードで

は、あなたのコンテンツをエンコード:私は、ASP.NET MVCの検証機能を無効にしたくなかったので、私は、このソリューションに達するまで私が見ているまま

これ以降は、アプリケーションの検証エラーがもう発生しませんでした。私はコードがhtmlタグ

ので、代わりにこの

私の入力値の

<strong>My input value</strong> 

を考え出すだろう私のフォームを編集したときに、私は別の問題を思い付いた、私が解読しなければなりませんでしたそのフィールドのHTMLは次のように、コントローラで私の値を取得する場合:

...  
entity.field = HttpUtility.HtmlDecode(entity.field); 
関連する問題