1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ufangx-AntiXssUF

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Фильтрация кросс-сайтных скриптов (XSS)

Версия NuGet Статус сборки Лицензия GitHub Версия GitHub

netstandard2.1 netstandard2.0 netcoreapp2.1 netcoreapp3.1 netframework4.6.1

Фильтр XSS с использованием белого списка, поддерживающий различные стратегии фильтрации. Можно выбрать подходящую стратегию фильтрации в зависимости от бизнес-сцены или динамически привязывать стратегию фильтрации в зависимости от роли пользователя. Поддерживает конфигурацию проекта OWASP AntiSamy и конфигурацию в формате JSON;

Способ использования:Добавьте зависимость в класс запуска Startup.cs

        public void ConfigureServices(IServiceCollection services)
        {
            // Добавляем политики и устанавливаем дефолтную политику
            services.AddXssFilter(opt => opt.DefaultSchemeName = "DefaultPolicy")
                .AddScheme<AntisamyPolicy>("antisamy", () => File.ReadAllTextAsync(Path.Combine(HostEnvironment.ContentRootPath, "resources/antisamy.xml")))
                .AddScheme<AntisamyPolicy>("anythinggoes", () => File.ReadAllTextAsync(Path.Combine(HostEnvironment.ContentRootPath, "resources/antisamy-anythinggoes.xml")))
                .AddScheme<AntisamyPolicy>("ebay", () => File.ReadAllTextAsync(Path.Combine(HostEnvironment.ContentRootPath, "resources/antisamy-ebay.xml")))
                .AddScheme<AntisamyPolicy>("myspace", () => File.ReadAllTextAsync(Path.Combine(HostEnvironment.ContentRootPath, "resources/antisamy-myspace.xml")))
                .AddScheme<AntisamyPolicy>("slashdot", () => File.ReadAllTextAsync(Path.Combine(HostEnvironment.ContentRootPath, "resources/antisamy-slashdot.xml")))
                .AddScheme<AntisamyPolicy>("test", () => File.ReadAllTextAsync(Path.Combine(HostEnvironment.ContentRootPath, "resources/antisamy-test.xml")))
                .AddScheme<JsonFilterPolicy>("DefaultPolicy", () => File.ReadAllTextAsync(Path.Combine(HostEnvironment.ContentRootPath, "resources/DefaultPolicy.json")));
            
            // Добавляем модели биндеров
            services.AddControllers(options =>
            {
                options.ModelBinderProviders.Insert(0, new RichTextBinderProvider());
            });
            services.AddControllersWithViews();
        }
        
```. В конструкторе внедряются зависимости
---------------------------------------
```C#
        // в зависимости от внедрения
        public HomeController(IFilterPolicyFactory policyFactory)
        {
            this.policyFactory = policyFactory;
        }

        public async Task<IActionResult> Test(string source)
        {
            var policyName = "ebay"; // имя стратегии
            var filter = await policyFactory.CreateHtmlFilter(policyName); // создание фильтра
            var clean = filter.Filters(source); // фильтрация опасного кода
            return Content(clean);
        }
        

Использование модели байндинга


        // стратегия фильтрации модели байндинга
        public class TestModel
        {
            public string Name { get; set; }
            [XssSchemeName("ebay")]
            public RichText RichText { get; set; }
        }        
        

Прямое использование в контроллере


        public IActionResult Test(TestModel model)
        {
            string clean = model?.RichText; // здесь автоматически фильтруется опасный код
            return Content(clean ?? string.Empty);
        }

        // использование параметров байндинга для фильтрации стратегии
        public IActionResult Test([XssSchemeName("ebay")] RichText richText)
        {
            string clean = richText; // здесь автоматически фильтруется опасный код
            return Content(clean ?? string.Empty);
        }
        

Не используя внедрение зависимостей и прямое использование

  1. Используя встроенные базовые стратегии
        // использование параметров байндинга для фильтрации стратегии, здесь вам нужно добавить модель байндинг
        public IActionResult Test(RichText richText)
        {
            string clean = richText; // здесь автоматически фильтруется опасный код
            return Content(clean ?? string.Empty);
        }

        // Здесь нет необходимости добавлять модель байндинг
        public IActionResult Test(string source)
        {
            RichText richText = source;
            string clean = richText; // здесь автоматически фильтруется опасный код
            return Content(clean ?? string.Empty);
        }
        
```2. Указание стратегии

```C#

        public IActionResult Test(string source)
        {
            var policy = new AntisamyPolicy(); // для JSON-формата используйте класс JsonFilterPolicy
            policy.Init(File.ReadAllText("c:/www/resources/antisamy-ebay.xml"), "ebay");
            var filter = new HtmlFilter(policy);
            var clean = filter.Filters(source); // фильтрация опасного кода
            return Content(clean ?? string.Empty);
        }
        

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Межсайтовый скриптинг (XSS) фильтры с использованием стратегии фильтрации по белому списку поддерживают различные стратегии фильтрации. Можно выбрать подходящую стратегию в зависимости от бизнес-сценария или динамически привязать стратегию на основе роли пользователя. Поддерживается конфигурация проекта OwaspAntisamy, поддерживается конфигурация... Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ufangx-AntiXssUF.git
git@api.gitlife.ru:oschina-mirror/ufangx-AntiXssUF.git
oschina-mirror
ufangx-AntiXssUF
ufangx-AntiXssUF
master