Техническое задание: Защищенный PDF-просмотрщик
Цель проекта
Создать безопасный веб-интерфейс для просмотра PDF-документов, который предотвращает несанкционированное скачивание и печать исходных файлов, сохраняя при этом базовый функционал для комфортного чтения.
Ключевые требования
Безопасность и доступ
- PDF-файлы должны храниться в директории, закрытой для прямого доступа из интернета (например, выше корневой папки веб-сервера или с настройками запрета в .htaccess / nginx конфигурации).
- Доступ к файлам для просмотра осуществляется только через скрипт-просмотрщик (например,
viewer.php?f=имя_файла).
- Реализовать механизм проксирования или передачи файла частями (чанками) для предотвращения прямой загрузки целого файла.
- Ссылки на ресурсы (чанки) должны иметь короткое время жизни (TTL).
Функционал просмотрщика
- В основе должна использоваться библиотека pdf.js.
- Обязательный базовый функционал:
- Навигация по страницам.
- Поиск по тексту.
- Выделение текста для копирования (в рамках интерфейса).
- Панель превью страниц (миниатюры).
- Масштабирование.
- Функции скачивания и печати (в том числе через контекстное меню браузера и горячие клавиши) должны быть заблокированы или удалены из интерфейса.
Техническая реализация
- Серверная часть (PHP, Node.js или другой язык) для безопасной загрузки файла из защищенной папки и его передачи в просмотрщик.
- Адаптация или кастомизация стандартного вьювера pdf.js для отключения нежелательных возможностей.
- Решение о точном механизме передачи файла (прокси, чанки) остается на усмотрение исполнителя, но должно быть обосновано с точки зрения безопасности.
Ожидаемый результат
Пользователь получает доступ к документу только через веб-интерфейс для чтения. Все попытки сохранить оригинальный PDF-файл или отправить его на печать должны блокироваться. Архитектура должна минимизировать риски прямого доступа к исходному файлу.