Мне нужен глобальный подход к очистке всех входящих запросов после привязки к модели. sanitizer будет htmlsanitizer.net 6. Я попробовал фильтр действий, который проходит через все свойства входящей модели и очищает все свойства строк. Но я не хочу углубляться в размышления из-за снижения производительности. Затем я перешел к специальным подшивкам моделей, и это показалось мне лучшим вариантом и более чистым. Однако, если я правильно помню, я не могу справиться с ситуациями, когда входящая модель имеет вложенные модели, некоторые свойства которых необходимо очистить. Хотелось бы услышать от вас какие-то подходы или рекомендации. Заранее спасибо
Несколько кода
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Ganss.XSS;
public class HtmlSanitizingBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
if (bindingContext == null) throw new ArgumentNullException(nameof(bindingContext));
var sanitizer = new HtmlSanitizer();
var modelName = bindingContext.ModelName;
var valueProviderResult = bindingContext.ValueProvider.GetValue(modelName);
if (valueProviderResult != ValueProviderResult.None)
{
bindingContext.ModelState.SetModelValue(modelName, valueProviderResult);
var value = valueProviderResult.FirstValue;
if (!string.IsNullOrWhiteSpace(value))
{
var sanitizedValue = sanitizer.Sanitize(value);
bindingContext.Result = ModelBindingResult.Success(sanitizedValue);
return Task.CompletedTask;
}
}
return Task.CompletedTask;
}
}
Startup.cs
builder.Services.AddControllers(options =>
{
options.ModelBinderProviders.Insert(0, new CustomModelBinderProvider());
});
public class CustomModelBinderProvider : IModelBinderProvider
{
public IModelBinder GetBinder(ModelBinderProviderContext context)
{
if (context == null) throw new ArgumentNullException(nameof(context));
if (context.Metadata.ModelType == typeof(string))
{
return new HtmlSanitizingBinder();
}
return null;
}
}
Источник: https://stackoverflow.com/questions/781 ... anitizer-g
Как очистить строковые поля входящих моделей в .net 6 с помощью HtmlSanitizer глобально? ⇐ C#
Место общения программистов C#
1710406660
Гость
Мне нужен глобальный подход к очистке всех входящих запросов после привязки к модели. sanitizer будет htmlsanitizer.net 6. Я попробовал фильтр действий, который проходит через все свойства входящей модели и очищает все свойства строк. Но я не хочу углубляться в размышления из-за снижения производительности. Затем я перешел к специальным подшивкам моделей, и это показалось мне лучшим вариантом и более чистым. Однако, если я правильно помню, я не могу справиться с ситуациями, когда входящая модель имеет вложенные модели, некоторые свойства которых необходимо очистить. Хотелось бы услышать от вас какие-то подходы или рекомендации. Заранее спасибо
Несколько кода
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Ganss.XSS;
public class HtmlSanitizingBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
if (bindingContext == null) throw new ArgumentNullException(nameof(bindingContext));
var sanitizer = new HtmlSanitizer();
var modelName = bindingContext.ModelName;
var valueProviderResult = bindingContext.ValueProvider.GetValue(modelName);
if (valueProviderResult != ValueProviderResult.None)
{
bindingContext.ModelState.SetModelValue(modelName, valueProviderResult);
var value = valueProviderResult.FirstValue;
if (!string.IsNullOrWhiteSpace(value))
{
var sanitizedValue = sanitizer.Sanitize(value);
bindingContext.Result = ModelBindingResult.Success(sanitizedValue);
return Task.CompletedTask;
}
}
return Task.CompletedTask;
}
}
Startup.cs
builder.Services.AddControllers(options =>
{
options.ModelBinderProviders.Insert(0, new CustomModelBinderProvider());
});
public class CustomModelBinderProvider : IModelBinderProvider
{
public IModelBinder GetBinder(ModelBinderProviderContext context)
{
if (context == null) throw new ArgumentNullException(nameof(context));
if (context.Metadata.ModelType == typeof(string))
{
return new HtmlSanitizingBinder();
}
return null;
}
}
Источник: [url]https://stackoverflow.com/questions/78153948/how-to-sanitize-string-fields-of-incoming-models-in-net-6-using-htmlsanitizer-g[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия