---
sidebar_label: "Обзор безопасности"
title: "Обзор безопасности - CyberGo html | меры защиты"
description: "Обзор безопасности CyberGo html: лимит ввода, глубина DOM, защита от обхода пути, восстановление после паник, тайм-ауты и подключаемый аудит."
sidebar_position: 1
---

# Обзор безопасности

Библиотека HTML разработана с приоритетом безопасности и включает встроенные многоуровневые механизмы защиты.

## Функции безопасности

### Ограничение размера ввода

По умолчанию максимальный размер ввода — 50 МБ, предотвращает исчерпание памяти:

```go
cfg := html.DefaultConfig()
cfg.MaxInputSize = 10 * 1024 * 1024 // Настройка на 10 МБ
```

### Ограничение глубины DOM

По умолчанию максимальная глубина — 500, предотвращает атаки с рекурсивными бомбами:

```go
cfg.MaxDepth = 200 // Усиление ограничения
```

### Защита от обхода пути

Файловые операции автоматически обнаруживают и блокируют попытки обхода пути (например, `../../../etc/passwd`) и записывают их через систему аудита.

### Восстановление после паники

Все операции извлечения включают встроенный механизм восстановления panic, возвращающий ошибку `ErrInternalPanic`, что гарантирует, что сервис не выйдет из строя из-за злонамеренного ввода.

### Тайм-аут обработки

Настраиваемый тайм-аут обработки предотвращает бесконечную обработку злонамеренного HTML:

```go
cfg.ProcessingTimeout = 10 * time.Second
```

### Очистка контента

Опциональная функция очистки контента, удаляющая потенциально опасные теги и атрибуты:

```go
cfg.EnableSanitization = true
```

## Система аудита

Подробная конфигурация безопасности аудита описана в [Система аудита](../api-reference/modules/audit).

Система аудита может записывать следующие события безопасности:

| Событие | Описание |
|------|------|
| `AuditEventBlockedTag` | Заблокированные HTML-теги |
| `AuditEventBlockedAttr` | Заблокированные атрибуты |
| `AuditEventBlockedURL` | Заблокированные URL |
| `AuditEventInputViolation` | Нарушения размера ввода |
| `AuditEventDepthViolation` | Нарушения глубины DOM |
| `AuditEventPathTraversal` | Попытки обхода пути |
| `AuditEventTimeout` | Тайм-ауты обработки |
| `AuditEventEncodingIssue` | Аномалии кодировки |

## Конфигурация высокой безопасности

```go
cfg := html.HighSecurityConfig()
// Автоматически включает: ужесточённые ограничения, более короткие тайм-ауты, полный аудит
```

## Обработка ошибок

Все нарушения безопасности возвращают чёткие ошибки с поддержкой `errors.Is` / `errors.As`:

```go
result, err := html.Extract(data)
if err != nil {
    switch {
    case errors.Is(err, html.ErrInputTooLarge):
        // Записать и отклонить
    case errors.Is(err, html.ErrMaxDepthExceeded):
        // Возможно злонамеренная конструкция
    case errors.Is(err, html.ErrInternalPanic):
        // Восстановление после паники, проверить ввод
    }
}
```
