Отображение PDF для пользователя - PullRequest
2 голосов
/ 05 декабря 2009

Мы предоставляем веб-форму, в которой пользователи заполняют свои личные данные; некоторые из них являются конфиденциальной информацией (SSN, день рождения и т. д.). После отправки пользователем данные предварительно заполняются в PDF, который затем становится доступным по ссылке.

Мы создаем PDF-файл в папке с правами записи на веб-сайте.

Как мы можем безопасно создавать и добавлять PDF-файлы в этой папке с любой схемой именования (используя GUID?), Чтобы другой пользователь не мог угадать / подделать местоположение файла PDF, ввести его в URL-адрес и получить доступ к PDF-файлу другого человека?

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

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

Спасибо!

Ответы [ 4 ]

1 голос
/ 05 декабря 2009

попытка запутать путь к файлу на самом деле не делает его безопасным. Я бы нашел способ отправить электронное письмо или другой способ получить его для пользователя вместо того, чтобы разрешить доступ к открытому каталогу.

Заставьте веб-приложение извлекать файл для пользователя, а не полагаться на разрешения открытой папки веб-сервера.

просто имейте в виду, что запутывание не совсем безопасность.

0 голосов
/ 05 декабря 2009

Самый простой способ - это прокси файл через ваше приложение (например, fpassthru () в php), это позволяет вам использовать любую систему контроля доступа / идентификации, которую вы уже используете для динамического контента.

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

0 голосов
/ 05 декабря 2009

Для целей pdf, было бы не лучше ( Я знаю, что я буду заслужен этим ), чтобы сохранить фактический pdf в базе данных как BLOB, который был бы на бэкэнде сайта в вопросе?

Не будет нигде ссылки на URL, а также не будет выделен какой-либо конкретный путь в ссылках в этой форме.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

0 голосов
/ 05 декабря 2009

Если это действительно только на мгновение, создайте совершенно случайный файл (20384058532045850.pdf) во временном каталоге, немедленно предоставьте его пользователю и удалите его через определенный промежуток времени.

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

Поскольку PDF содержит конфиденциальные данные: не забудьте отключить кеширование, чтобы локальная копия PDF не сохранялась в кеше браузера клиента.

Не знаю точно, достаточно ли отключения кэширования через соответствующие заголовки, чтобы предотвратить локальное кэширование во всех браузерах. Возможно, вам придется изучить это.

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