Безопасные сгенерированные PDF-файлы - PullRequest
2 голосов
/ 17 сентября 2009

Мне нужно создать примерно 18 000 PDF-файлов, которые содержат конфиденциальную информацию. PDF-файлы будут предоставляться конечным пользователям через веб-приложение. Очевидно, что некоторые пользователи должны видеть больше отчетов, чем другие. Я подумываю об обслуживании PDF-файлов двумя способами: физически сохранить каждый PDF-файл в каталоге под веб-приложением или сохранить PDF-файл в базе данных. PDF-файлы должны просматриваться только авторизованными пользователями, и я не хочу, чтобы пользователи угадывали URL-адреса, чтобы увидеть информацию других пользователей. Но я немного колеблюсь, чтобы поместить эту информацию в базу данных.

Является ли один способ предпочтительнее другого?

Ответы [ 2 ]

6 голосов
/ 17 сентября 2009

Файл PDF в базе данных не более безопасен, чем файл PDF на диске, если оба они размещаются на одном веб-сайте. Если вы не разрешаете вашему веб-серверу обслуживать запросы на PDF, как любой другой ресурс на диске. Что, в вашем случае, было бы плохой идеей.

Я работал над проектом с похожими требованиями. Наши документы хранятся на диске (недоступны напрямую через URL на веб-сайте), а их местоположение и информация о безопасности хранятся в базе данных.

Когда приходит запрос на документ, я определяю, есть ли у пользователя права на документ (запросы к базе данных), и если да, я получаю местоположение файла и доставляю файл непосредственно через поток ответов.

2 голосов
/ 17 сентября 2009

Не храните PDF-файлы в дереве документов. Поместите их в другое место на диске, где пользователь не сможет ввести URL-адрес, поскольку URL-адрес отсутствует. Затем программно извлекайте данные только ПОСЛЕ проверки того, что пользователь имеет право на их просмотр, и возвращайте байты из программы.

В качестве альтернативы, вы можете создать отдельный каталог в дереве документов для каждого пользователя и поместить пароли в эти каталоги, используя безопасность веб-сервера, такую ​​как базовая аутентификация Apache или любой другой эквивалент на вашем сервере. Это может быть проще, но если пользователь может обмениваться документами в несовместимых комбинациях, то есть Ал и Боб могут видеть # 1, Ал и Кэти могут видеть # 2, Кэти и Дейв могут видеть # 3 и т. Д., Это не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...