2009-08-04 4 views
6

Ich erhalte diesen Fehler, wenn ich von TinyMCE in einer ASP.NET MVC-Ansicht posten.Validierung erkannte gefährliche Client-Eingabe - Post von TinyMCE in ASP.NET

Fehler:

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

Von googeln, sagt es nur eine validateRequest in der Page-Direktive an der Spitze hinzufügen was ich auch tat, aber ich habe immer diese Fehlermeldung erhalten. Wie Sie sehen können, ist unten mein Code in der Ansicht:

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

Antwort

5

[ValidateInput(false)] den Dekorateur verwenden.

Sie möchten dann eine HTMLEncode-Methode schreiben, um es sicher zu machen.

Lassen Sie es mich wissen, wenn Sie möchten, dass ich den Artikel posten, den ich benutze.

Hinzugefügt wurde die Encode Ich benutze

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

wenn Sie Beiträge verfassen können, dass – leora

+0

dank groß sein würde .. t Hat super geklappt. gibt es sowieso, um die Textarea von einer vorhandenen html-Seite zu präpalieren – leora

+0

Versteht nicht ganz, was du meinst [ich]. Redest du hier über Screen Scraping oder ... – griegs

5

Versuchen Sie das [AllowHtml] Attribut in Ihrem Modell.

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

Ärgerlich in Version 4 von Tinymce scheinen sie die Codierung entfernt: XML-Option.

landete ich von this answer mit einer Javascript HTML-Codierung Funktion auf, und auf meinem Submit-Button ich den Inhalt des Textbereiches codiere, bevor das Formular abschickt, durch tinymce des getContent und setContent Methoden

+1

fallengelassen zu haben Ich denke, es ist riskant, sich ausschließlich auf clientseitige Verschlüsselung zu verlassen, da es einen Übeltäter nicht daran hindert, direkt auf Ihre Site zu gelangen. Sie müssen auch Eingaben auf dem Server bereinigen. –

+0

Ja, es ist wichtig, sich das immer zu merken –

0

ich hatte das gleiche Problem mit. Ich wollte nicht ASP.NET MVC Validierung Funktion deaktivieren, so dass ich schaute, bis ich diese Lösung erreicht:

Am tinyMCE Plugin-Code codieren Ihre Inhalte (Ich verwende die ältere Version)

tinyMCE.init({ 
    ... 
    encoding: "xml" 
}); 

Und danach habe ich nicht mehr die Anwendung Validierung Fehler erhalten. Dann kam ich mit einem anderen Problem, wenn ich meine Form bearbeitet der Code kommen würde, mit den HTML-Tags

<strong>My input value</strong> 

anstelle dieses

Mein Eingangswert

Also, ich hatte zu dekodieren die html für das Feld, wenn meine Werte am Controller bekommen, wie folgt aus:

...  
entity.field = HttpUtility.HtmlDecode(entity.field);