Sandboxing – Безопасное выполнение кода – C#

Песочница С# – Sandbox

C# Sandbox – это ограниченная среда, в которой код выполняется с ограниченными разрешениями, ресурсами и привилегиями. Основная цель использования песочницы – изолировать потенциально ненадежный или небезопасный код, ограничивая потенциальный ущерб, который он может нанести в случае уязвимости системы безопасности или злонамеренного поведения.

Среда песочницы (sandbox environment) помогает снизить риски безопасности и обеспечить безопасное выполнение кода:

В этой статье рассматривается концепция песочницы C# и демонстрируется ее применение для обеспечения безопасного выполнения кода с помощью Aspose.HTML. Мы сосредоточимся на изучении свойства Security класса Configuration, которое Aspose.HTML для .NET предоставляет для обнаружения и реагирования на потенциальные угрозы безопасности в приложениях C#.

Sandbox Environment

Безопасность кода – Блокировать выполнение scripts

В песочнице вы можете обеспечить безопасность кода, изолируя потенциально ненадежные элементы от остальной части вашего приложения, защищая все приложение от уязвимостей. Набор флагов песочницы (sandboxing flags) – это набор флагов, которые используются для ограничения возможностей потенциально ненадежных ресурсов. Атрибут песочницы позволяет установить ряд ограничений на загружаемый контент, например, блокировать формы и скрипты. Это повышает безопасность кода текущего документа, особенно когда документ загружается из непроверенного источника.

В следующем примере C# показано, как пометить scripts как ненадежный ресурс и отключить их при выпролнении преобразования HTML в PDF:

  1. Инициализируйте экземпляр класса Configuration.
  2. Установите sandbox flag экземпляра конфигурации, чтобы задать значение Sandbox.Scripts. Это помечает scripts как ненадежные ресурсы в среде песочницы. Этот шаг имеет решающее значение, поскольку scripts представляют потенциальный риск при выполнении вредоносного кода.
  3. Создайте экземпляр класса HTMLDocument с помощью конструктора HTMLDocument(address, configuration), который принимает путь к файлу HTML и экземпляр конфигурации.
  4. Вызовите метод ConvertHTML(document, options, outputPath) для преобразования HTML в PDF.
 1using System.IO;
 2using Aspose.Html;
 3using Aspose.Html.Converters;
 4using Aspose.Html.Saving;
 5...
 6    // Create an instance of the Configuration class
 7    using (var configuration = new Configuration())
 8    {
 9        // Mark "scripts" as an untrusted resource
10        configuration.Security |= Sandbox.Scripts;
11
12        // Initialize an HTML document with specified configuration
13        using (var document = new HTMLDocument(Path.Combine(DataDir, "document-with-scripts.html"), configuration))
14        {
15            // Convert HTML to PDF
16            Converter.ConvertHTML(document, new PdfSaveOptions(), Path.Combine(OutputDir, "document-sandbox.pdf"));
17        }
18    }

Установив флаг безопасности для включения Sandbox.Scripts, библиотека Aspose.HTML для .NET гарантирует, что сценарии в HTML-документе не будут выполняться, помогая повысить безопасность и снизить потенциальные риски, связанные с ненадежными сценариями.

Как отключить загрузку изображений

Рассмотрим пример, где песочница используется для отключения загрузки изображений при выполнении HTML-кода:

  1. Подготовьте HTML-код и сохраните его в файл. Код HTML содержит элемент <span> со встроенным стилем, который устанавливает фоновое изображение из URL-адреса.
  2. Настройте песочницу. Создайте новый экземпляр класса Configuration и установите свойство Security экземпляра конфигурации с флагом Sandbox.Images. Это указывает на то, что ресурс изображений следует считать ненадежным в среде песочницы. Помечая изображения как ненадежные ресурсы, доступ к потенциально вредоносным источникам изображений ограничивается.
  3. Инициализируйте документ HTML с указанной конфигурацией.
  4. Вызовите метод ConvertHTML(document, options, outputPath) для преобразования документа HTML в файл PDF.
 1using System.IO;
 2using Aspose.Html;
 3using Aspose.Html.Converters;
 4using Aspose.Html.Saving;
 5...
 6    // Prepare HTML code and save it to a file
 7    var code = "<span style=\"background-image:url('https://httpbin.org/image/jpeg')\">Hello World!!</span> " +
 8               "<script>document.write('Have a nice day!');</script>";
 9
10    File.WriteAllText(Path.Combine(OutputDir, "sandboxing.html"), code);
11
12    // Create an instance of Configuration
13    using (var configuration = new Configuration())
14    {
15        // Mark 'Images' as an untrusted resource
16        configuration.Security |= Sandbox.Images;
17
18        // Initialize an HTML document with specified configuration
19        using (var document = new HTMLDocument(Path.Combine(OutputDir, "sandboxing.html"), configuration))
20        {
21            // Convert HTML to PDF
22            Converter.ConvertHTML(document, new PdfSaveOptions(), Path.Combine(OutputDir, "sandboxing-out.pdf"));
23        }
24    }

Приведенный выше пример C# демонстрирует процесс изолирования HTML-кода, помечая определенные ресурсы – в данном случае изображения – как ненадежные в среде песочницы, а затем преобразовывая HTML в формат PDF с отключенной загрузкой изображений.

Sandboxing Flags

В мире разработки программного обеспечения безопасность является главной заботой. Песочница включает в себя создание безопасной среды, в которой ненадежный код может работать без ущерба для целостности системы. Песочница C# помогает разработчикам снизить риски безопасности кода, защищая приложения от потенциальных уязвимостей. Библиотека Aspose.HTML C# предлагает несколько sandboxing flags, каждый из которых представляет разные случаи изоляции и безопасности. Вот некоторые флаги песочницы:

NameDescription
NoneIf a sandbox flag is not set, then every sandbox function is accepted.
NavigationThe flag prevents content from navigating browsing contexts other than the sandboxed browsing context itself (or browsing contexts further nested inside it), auxiliary browsing contexts, and the top-level browsing context.
PluginsThe flag prevents content from instantiating plugins, whether using the embed element, the object element, the applet element, or through the navigation of a nested browsing context unless those plugins can be secured.
OriginThe flag forces content into a unique origin, thus preventing it from accessing other content from the same origin.
FormsThe flag blocks form submission.
ScriptsThe flag blocks script execution.
ImagesThe flag disables image loading.

Вы можете скачать полные примеры и файлы данных с GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.