ASP.NET MVC EF Request. Опасный Form

Привет друзья услышали я хочу сделать insert и получаю следующую ошибку

Была обнаружена возможная стоимость Request. Опасный Form в клиенте (текст = "... обожай

Я понимаю, что это мера безопасности, чтобы предотвращать атаки из-за script, вопрос состоит в том, что я нуждаюсь в одном insert внутри моей базы данных текст с html, этот он этикетки полужирных шрифтов. И я схватил серию элементов html, кто-то знает, как я могу предотвращать это?

Это мой код

  var myText = $('.Editor-editor');
  var strData = myText.html();
  var icono = 'manzana'


function InsertBeneficio(strData, icono) {
  //console.log(data)
  document.getElementById('modal-header').innerHTML = 'Agregar Beneficio';
  document.getElementById('modal-body').innerHTML = `
            

Ingresar Beneficio


Volver a panel
`; $("#exampleModal").modal("show");

И этот мой метод

  [Authorize]
    [HttpPost]
    public ActionResult InsertBeneficios(string id_userCreated, string texto, string icono)
    {

        using (DBEnt db = new DBEnt())
        {

            var contacto = new HomeBeneficios()
            {
               texto =  texto,
               icono = icono

            };
            db.HomeBeneficios.Add(contacto);
            //db..add(cat);
            db.SaveChanges();
        }
        var action = "Insert";
        var comments = "Beneficios ingresado por el usuario : ";
        InsertInBitacora(id_userCreated, action, comments + id_userCreated);
        return View("Index");
    }

Ошибка:

Ошибка сервера в приложении '/'. Была обнаружена возможная стоимость Request. Опасный Form в клиенте (текст = "... обожай стоимости..."). Описание: ASP.NET он обнаружил данные в запросе, которые потенциально опасные, потому что они включают рукописный шрифт или разметку HTML. Возможно, что данные представляют попытку поместить в опасность безопасность приложения, как атака XSS. Если тип ввода приспособлен в приложении, смоги включать код на веб-странице, чтобы это позволять ясно. Чтобы получать больше информации, консультируйтесь http://go.microsoft.com/fwlink/?LinkID=212874. Детали исключения: System. Веб. HttpRequestValidationException: Была обнаружена возможная стоимость Request. Опасный Form в клиенте (текст = "... обожай Целей...").

Ошибка исходного кода:

Произвелось исключение, не контролируемое в течение выполнения Веб настоящего запроса. Информация об источнике и расположении исключения они могут идентифицироваться используя исключение следования следующей батарейки.

Следование батарейки:

[HttpRequestValidationException (0x80004005): Была обнаружена возможная стоимость Request. Опасный Form в клиенте (текст = "... обожай Целей...").] System. Веб. HttpRequest. ValidateString (String оценил, String collectionKey, RequestValidationSource requestCollection) +9926025 System. Веб. <> c __ DisplayClass280_0.b __ 0 (String key, String оценил) +23 System. Веб. HttpValueCollection. EnsureKeyValidated (String key) +9924087 System. Веб. HttpValueCollection. GetValues (String ямс) +18 System. Веб. Mvc. ValueProviderResultPlaceholder. GetResultFromCollection (String key, NameValueCollection collection, CultureInfo culture) +20 System. Веб. Mvc. NameValueCollectionValueProvider. GetValue (String key, Boolean skipValidation) +106 System. Веб. Mvc. ValueProviderCollection. GetValue (String key, Boolean skipValidation) +89 System. Веб. Mvc. DefaultModelBinder. BindModel (ControllerContext controllerContext, ModelBindingContext bindingContext) +267 System. Веб. Mvc. ControllerActionInvoker. GetParameterValue (ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +335 System. Веб. Mvc. ControllerActionInvoker. GetParameterValues (ControllerContext controllerContext, ActionDescriptor actionDescriptor) +105 System. Веб. Mvc. Async. <> c __ DisplayClass3_1.b __ 0 (AsyncCallback asyncCallback, Object asyncState) +640 System. Веб. Mvc. Async. WrappedAsyncResult1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +14 System.Web.Mvc.Async.WrappedAsyncResultBase1. Begin (AsyncCallback callback, Object state, Int32 timeout) +128 System. Веб. Mvc. Async. AsyncControllerActionInvoker. BeginInvokeAction (ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state) +346 System. Веб. Mvc. <> c.b __ 152_0 (AsyncCallback asyncCallback, Object asyncState, ExecuteCoreState innerState) +27 System. Веб. Mvc. Async. WrappedAsyncVoid1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +30 System.Web.Mvc.Async.WrappedAsyncResultBase1. Begin (AsyncCallback callback, Object state, Int32 timeout) +128 System. Веб. Mvc. Controller. BeginExecuteCore (AsyncCallback callback, Object state) +494 System. Веб. Mvc. <> c.b __ 151_1 (AsyncCallback asyncCallback, Object callbackState, Controller controller) +16 System. Веб. Mvc. Async. WrappedAsyncVoid1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +20 System.Web.Mvc.Async.WrappedAsyncResultBase1. Begin (AsyncCallback callback, Object state, Int32 timeout) +128 System. Веб. Mvc. Controller. BeginExecute (RequestContext requestContext, AsyncCallback callback, Object state) +403 System. Веб. Mvc. Controller. System. Веб. Mvc. Async. IAsyncController. BeginExecute (RequestContext requestContext, AsyncCallback callback, Object state) +16 System. Веб. Mvc. <> c.b __ 20_0 (AsyncCallback asyncCallback, Object asyncState, ProcessRequestState innerState) +54 System. Веб. Mvc. Async. WrappedAsyncVoid1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +30 System.Web.Mvc.Async.WrappedAsyncResultBase1. Begin (AsyncCallback callback, Object state, Int32 timeout) +128 System. Веб. Mvc. MvcHandler. BeginProcessRequest (HttpContextBase httpContext, AsyncCallback callback, Object state) +427 System. Веб. Mvc. MvcHandler. BeginProcessRequest (HttpContext httpContext, AsyncCallback callback, Object state) +48 System. Веб. Mvc. MvcHandler. System. Веб. IHttpAsyncHandler. BeginProcessRequest (HttpContext context, AsyncCallback cb, Object экстравосходит) +16 System. Веб. CallHandlerExecutionStep. System. Веб. HttpApplication. IExecutionStep. Execute () +105 System. Веб. HttpApplication. ExecuteStepImpl (IExecutionStep step) +50 System. Веб. HttpApplication. ExecuteStep (IExecutionStep step, Boolean& completedSynchronously) +163

1
задан 01.10.2019, 16:57
2 ответа

Если estГЎs посылая в сервер cГіdigo Html (в твоем случае <> segГєn ты показываешь в комментариях), по умолчанию AcciГіn твоего Драйвера это interpretarГЎ как cГіdigo опасно и lanzarГЎ одна excepciГіn.

, Чтобы решать эту проблему, и если не важен безопасность из данных, полученных в Драйвере, ты можешь аннулировать это поведение aГ±adiendo в твой AcciГіn признак [ValidateInput(false)].

[Authorize]
[HttpPost]
[ValidateInput(false)]
public ActionResult InsertBeneficios(string id_userCreated, string texto, string icono)
{
    using (DBEnt db = new DBEnt())
    {
        var contacto = new HomeBeneficios()
        {
           texto =  texto,
           icono = icono
        };
        db.HomeBeneficios.Add(contacto);
        //db..add(cat);
        db.SaveChanges();
    }
    var action = "Insert";
    var comments = "Beneficios ingresado por el usuario : ";
    InsertInBitacora(id_userCreated, action, comments + id_userCreated);
    return View("Index");
}
1
ответ дан 01.12.2019, 16:05

Сначала, храни в базе данных, RAW HTML, а именно, чистый HTML, не кодируя даже не исправлений (sanitizings).

SegГєn она documentaciГіn: https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.allowhtmlattribute? view=aspnet-mvc-5.2

В твоей модели:

[AllowHtml] //Agrega este Data-Annotation.
public string PropiedadQueTieneHTML{ get; set; }

Это sГ,, - в момент INFORMACIГіN, SГЌ ИЛИ SГЌ показала (renderizar) HTML, должен быть "дезинфицированным", для этого используй ее librerГ - в: https://www.nuget.org/packages/HtmlSanitizer / С этим ты предотвращаешь проблемы атак XSS.

@Html.Raw(HtmlUtility.SanitizeHtml(Model.PropiedadQueTieneHTML))

Интересное ее librerГ - в: ты можешь видеть cГіdigo шрифт в https://github.com/mganss/HtmlSanitizer

И видеть часть Вашего функционирования в: http://xss.ganss.org/

Другая добавочная деталь, у каждого Веб разработчика есть обязанность проверки https://www.owasp.org для того, чтобы он понял cГіmo улучшать безопасность Ваших Веб приложений.

2
ответ дан 01.12.2019, 16:05
  • 1
    услышь fred только вещь, как я делаю ему, чтобы мочь посылать за неудар в лунку все мои данные? или лучше посылать их из-за ajax? – E.Rawrdríguez.Ophanim 01.10.2019, 17:22
  • 2
    Будь неважен, если enví схвати из-за Аякса или из-за традиционного submit, что я только что помнил, что olvidé упоминать о добавлять [ValidateInput(false)] в acció n драйвера, который ты используешь – fredyfx 01.10.2019, 20:39