Вставка HTML-кода в базу данных SQL с помощью WebMatrix Razor

Моя колонка в БД: nvarchar(MAX)

Мне нужно добавить HTML-код в мою базу данных: from CKEditor. Я получаю следующую ошибку.

A potentially dangerous Request.Form value was detected from the client (Description="<h1>Heding 1&nbsp;</...").

Я использую следующий код:

var String=Request["String"];

Я даже использовал следующее:

 var String= HttpUtility.HtmlEncode(Request["String"]);
String=Request["String"];

вот часть моего кода:

 if(IsPost){
    var Description =Request.Unvalidated["Description"];
    // Here I insert into Database

и часть FORM:

<form action="" enctype="multipart/form-data" method="post">
<div class="row">
    <div class="two columns offset-by-two"><br/><label> Description: </label><br/></div>
    <div class="eight columns"><textarea name="Description"></textarea></div>

Я хочу сохранить текст из «Описания» в свою базу данных....


person Dawood Awan    schedule 31.12.2012    source источник


Ответы (4)


Вам просто нужно использовать Request.Unvalidated для ссылки на входные данные, содержащие HTML, если вы не хотите, чтобы проверка запроса ASP.NET запускалась в рамках платформы веб-страниц ASP.NET:

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

Or:

var text = Request.Unvalidated("myTextBox");
person Mike Brind    schedule 31.12.2012
comment
Останется ли это уязвимым для SQL-инъекций? - person Dawood Awan; 01.01.2013
comment
Нет, это не имеет ничего общего с SQL-инъекцией, от которой защищены параметризованные запросы. И что значит не сработало? Вы уверены, что указали правильный ввод? Можете ли вы предоставить небольшую копию вашей страницы? - person Mike Brind; 01.01.2013
comment
Я только что проверил ваш код (добавил кнопку отправки и закрыл форму), и он отлично работает для меня. - person Mike Brind; 02.01.2013
comment
Вы добавили javascript CKEditor в свой файл? - person Dawood Awan; 02.01.2013
comment
Какая библиотека содержит: Request.Unvalidated[] - person Dawood Awan; 02.01.2013
comment
Это здесь: aspnetwebstack.codeplex .com/SourceControl/changeset/view/. Попробуйте с круглыми скобками: var x = Request.Unvalidated("MyField"); У меня работает в любом случае. - person Mike Brind; 02.01.2013

Похоже, HtmlEncoding должен помочь.

Вы пробовали следующее:

var myColumnData = HttpUtility.HtmlEncode(Request["String"]);

Затем передайте этот myColumnData и все остальные столбцы в таблицу базы данных.

Редактировать: В дополнение к вышесказанному вы также можете просмотреть настройки проекта, как это рекомендуется в следующем блоге: Клиент обнаружил потенциально опасное значение Request.

person Yusubov    schedule 31.12.2012
comment
HtmlEncoding вообще не поможет. Вы получите ту же ошибку. - person Mike Brind; 01.01.2013

Это помогло мне.

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

Спасибо.

person flakomalo    schedule 26.04.2013

ПРАВИЛА БЕЗОПАСНОСТИ..... Прежде чем вы отправите его в базу данных, я предлагаю вам отфильтровать подозрительные теги, такие как теги сценария.

var x = Request.Unvalidated("MyField");

if(x.Contains("<script>") || x.Contains("</script>")){
    //no script tag allowed.
}
person Ifeanyi Chukwu    schedule 30.05.2013