Sandboxing – Безопасное выполнение кода – C#
Песочница С# – Sandbox
C# Sandbox – это ограниченная среда, в которой код выполняется с ограниченными разрешениями, ресурсами и привилегиями. Основная цель использования песочницы – изолировать потенциально ненадежный или небезопасный код, ограничивая потенциальный ущерб, который он может нанести в случае уязвимости системы безопасности или злонамеренного поведения.
Среда песочницы (sandbox environment) помогает снизить риски безопасности и обеспечить безопасное выполнение кода:
- Песочница позволяет отделить потенциально ненадежный код от остальной части приложения, гарантируя, что уязвимости в изолированном коде не поставят под угрозу все приложение.
- Песочница позволяет вам устанавливать ограниченные разрешения на выполнение кода, предотвращая выполнение действий вредоносного кода.
- Песочница может использоваться для ограничения ресурсов, чтобы код не потреблял чрезмерных системных или других ресурсов, что негативно влияет на общую производительность приложения.
- Разработчики могут отслеживать и контролировать действия кода в песочнице C# и прекращать ее при обнаружении подозрительного или злонамеренного поведения.
- Среда песочницы помогает разработчикам C# снизить риски безопасности, связанные со сторонними библиотеками, подключаемыми модулями или другими ненадежными источниками кода.
В этой статье рассматривается концепция песочницы C# и демонстрируется ее применение для обеспечения безопасного выполнения кода с помощью Aspose.HTML. Мы сосредоточимся на изучении свойства Security класса Configuration, которое Aspose.HTML for .NET предоставляет для обнаружения и реагирования на потенциальные угрозы безопасности в приложениях C#.
Sandbox Environment
Безопасность кода – Блокировать выполнение scripts
В песочнице вы можете обеспечить безопасность кода, изолируя потенциально ненадежные элементы от остальной части вашего приложения, защищая все приложение от уязвимостей. Набор флагов песочницы (sandboxing flags) – это набор флагов, которые используются для ограничения возможностей потенциально ненадежных ресурсов. Атрибут песочницы позволяет установить ряд ограничений на загружаемый контент, например, блокировать формы и скрипты. Это повышает безопасность кода текущего документа, особенно когда документ загружается из непроверенного источника.
В следующем примере C# показано, как пометить scripts как ненадежный ресурс и отключить их при выпролнении преобразования HTML в PDF:
- Инициализируйте экземпляр класса Configuration.
- Установите
sandbox flag экземпляра конфигурации, чтобы задать значение
Sandbox.Scripts
. Это помечает scripts как ненадежные ресурсы в среде песочницы. Этот шаг имеет решающее значение, поскольку scripts представляют потенциальный риск при выполнении вредоносного кода. - Создайте экземпляр класса HTMLDocument с помощью конструктора
HTMLDocument(
address, configuration
), который принимает путь к файлу HTML и экземпляр конфигурации. - Вызовите метод
ConvertHTML(
document, options, outputPath
) для преобразования HTML в PDF.
1// Create an instance of the Configuration class
2using (var configuration = new Configuration())
3{
4 // Mark "scripts" as an untrusted resource
5 configuration.Security |= Sandbox.Scripts;
6
7 // Initialize an HTML document with specified configuration
8 using (var document = new HTMLDocument(Path.Combine(DataDir, "document-with-scripts.html"), configuration))
9 {
10 // Convert HTML to PDF
11 Converter.ConvertHTML(document, new PdfSaveOptions(), Path.Combine(OutputDir, "document-sandbox.pdf"));
12 }
13}
Установив флаг безопасности для включения Sandbox.Scripts
,
библиотека Aspose.HTML for .NET гарантирует, что сценарии в HTML-документе не будут выполняться, помогая повысить безопасность и снизить потенциальные риски, связанные с ненадежными сценариями.
Как отключить загрузку изображений
Рассмотрим пример, где песочница используется для отключения загрузки изображений при выполнении HTML-кода:
- Подготовьте HTML-код и сохраните его в файл. Код HTML содержит элемент
<span>
со встроенным стилем, который устанавливает фоновое изображение из URL-адреса. - Настройте песочницу. Создайте новый экземпляр класса Configuration и установите свойство Security экземпляра конфигурации с флагом Sandbox.Images. Это указывает на то, что ресурс изображений следует считать ненадежным в среде песочницы. Помечая изображения как ненадежные ресурсы, доступ к потенциально вредоносным источникам изображений ограничивается.
- Инициализируйте документ HTML с указанной конфигурацией.
- Вызовите метод
ConvertHTML(
document, options, outputPath
) для преобразования документа HTML в файл PDF.
1// Prepare HTML code and save it to a file
2var code = "<span style=\"background-image:url('https://httpbin.org/image/jpeg')\">Hello, World!!</span> " +
3 "<script>document.write('Have a nice day!');</script>";
4
5File.WriteAllText(Path.Combine(OutputDir, "sandboxing.html"), code);
6
7// Create an instance of Configuration
8using (var configuration = new Configuration())
9{
10 // Mark 'Images' as an untrusted resource
11 configuration.Security |= Sandbox.Images;
12
13 // Initialize an HTML document with specified configuration
14 using (var document = new HTMLDocument(Path.Combine(OutputDir, "sandboxing.html"), configuration))
15 {
16 // Convert HTML to PDF
17 Converter.ConvertHTML(document, new PdfSaveOptions(), Path.Combine(OutputDir, "sandboxing-out.pdf"));
18 }
19}
Приведенный выше пример C# демонстрирует процесс изолирования HTML-кода, помечая определенные ресурсы – в данном случае изображения – как ненадежные в среде песочницы, а затем преобразовывая HTML в формат PDF с отключенной загрузкой изображений.
Sandboxing Flags
В мире разработки программного обеспечения безопасность является главной заботой. Песочница включает в себя создание безопасной среды, в которой ненадежный код может работать без ущерба для целостности системы. Песочница C# помогает разработчикам снизить риски безопасности кода, защищая приложения от потенциальных уязвимостей. Библиотека Aspose.HTML C# предлагает несколько sandboxing flags, каждый из которых представляет разные случаи изоляции и безопасности. Вот некоторые флаги песочницы:
Name | Description |
---|---|
None | If a sandbox flag is not set, then every sandbox function is accepted. |
Navigation | The 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. |
Plugins | The 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. |
Origin | The flag forces content into a unique origin, thus preventing it from accessing other content from the same origin. |
Forms | The flag blocks form submission. |
Scripts | The flag blocks script execution. |
Images | The flag disables image loading. |
Вы можете скачать полные примеры и файлы данных с GitHub.