Blazor Form - санация пользовательского ввода (<InputText>, <InputTextArea>et c) - PullRequest
1 голос
/ 12 апреля 2020

Я работаю над приложением Blazor, где у меня есть форма, которая принимает пользовательский ввод (форма с некоторыми текстовыми полями и текстовой областью). Как лучше всего предотвратить межсайтовый скриптинг и XSS атаки.

Я использую Microsoft.AspNetCore.WebUtilities для других компонентов для кодирования и декодирования html. Будет ли достаточно кодирования и декодирования при вводе пользователем и предотвращения атак, уязвимостей и т. Д. c.

Нужно ли использовать какую-либо библиотеку, например Gans.XSS.HtmlSanitizer, или в Blazor есть какая-то встроенная функция.

Заранее спасибо.

1 Ответ

1 голос
/ 17 апреля 2020

Поскольку входные данные должны быть привязаны к модели внутри компонента <EditForm>, а эта модель является классом, можете ли вы использовать встроенный <DataAnnotationsValidator />, чтобы сделать это с помощью регулярного выражения? Вы можете создать свой класс Model с аннотацией данных Regex по связанным свойствам:

using System.ComponentModel.DataAnnotations;

public class ModelToBindTo()
{
    [RegularExpression(@"[A-Za-z0-9 _.-]*")] //Check/tweak this before use, going from memory 
    public string PropertyToBindInputText { get; set;}
}

При связывании с этим и использовании валидатора это должно ограничить любые входные символы, которые могут вас получить возникли проблемы, и вы могли бы снова запустить его с регулярным выражением на стороне сервера, если необходимо дважды проверить его перед сохранением данных или делать что-либо еще с ним.

Более подробную информацию о валидаторе можно найти здесь
Ссылку на аннотации данных можно найти здесь

...