Потенциально опасное значение Request.Form было обнаружено у клиента

Я использую CKEditor/CKFinder в качестве редактора wysiwyg на моем сайте MVC.NET.

Я установил [ValidateInput(false)], и он работает при отладке локально, но при публикации сайта я получаю следующую ошибку:

A potentially dangerous Request.Form value was detected from the client (message="<p>
<em>Testing</e...").

может кто-нибудь объяснить, почему опубликованный сайт отличается от локального сайта, особенно когда я установил [ValidateInput(false)]?

* Обновление: * Я использую .Net 3.5, поэтому не должен [ValidateInput(false)] выработать поле?

Ответ 1

Добавьте это в свой web.config:

<httpRuntime requestValidationMode="2.0" />

Ответ 2

Вы пытались установить свойство htmlEncodeOutput?

> CKEDITOR.replace('editor1', {
>   htmlEncodeOutput: true });

Это должно кодировать вывод, и вы должны быть в состоянии избежать установки requestValidationMode.

Документация для него находится здесь: документация ckEditor

Ответ 3

Просто добавьте аннотацию к методу Post. Действие как [ValidateInput (false)]

[HttpPost]
    [ValidateAntiForgeryToken]
    [ValidateInput(false)]
    public ActionResult Detail(ModelClass m)
    { return View(); }

Ответ 4

ValidateRequest = "ложь" Добавьте это на определенной странице.

Пример:

Ответ 5

Добавьте ValidateRequest="false" на свою страницу:

<%@ Page Language="C#" AutoEventWireup="false" Codebehind="MyForm.aspx.cs" Inherits="Proj.MyForm" ValidateRequest="false"%>

Или добавьте в web.config при использовании .NET Framework 4.0 (Visual Studio 2010)

<httpRuntime requestValidationMode="2.0" />

Ответ 6

Используйте Request.Unvalidated["myTextBox"]

например,

var text = Request.Unvalidated["myTextBox"];

где "myTextBox" - это поле формы, из которого вы хотите разрешить размещение HTML.