Допустим, у нас есть веб-сайт с приложением CF, написанным собственными силами.
Предположим, что:
- Будет использоваться Server 2003 IIS6 или 2008 IIS7
- Будет использоваться ColdFusion 8
- Просмотр каталога запрещен
- Для подключения требуется SSL
- Процесс входа в учетную запись безопасен (да, я знаю, что это совсем другое
шарик воска, но эта концепция обсуждается до тошноты в Интернете).
Скажем, у меня есть файл в https://domain.com/folder1/folder2/ с именем, подобным picture92352.ext, представьте его в формате jpg, pdf или как угодно. Полный путь между доменным именем и файлом сильно различается по структуре имен, глубине и т. Д. Файлы не объединены в одну папку.
Приложение ограничивает ссылки для пользователя, так что пользователь должен иметь доступ к этому файлу, чтобы найти его в первую очередь, но в настоящее время, если человек знает полный URL-адрес этого файла, он может получить его без входа в систему. в приложение. Это классическая безопасность по неизвестности. Случайный человек вряд ли найдет файл, к которому он не должен получить доступ, но как только кто-то получит доступ, он знает, как получить к нему доступ с другого компьютера, где его действия не могут быть отслежены.
Как мне ограничить доступ к этим файлам до того, как кто-то войдет в систему, и сделать их доступными для внешних пользователей после того, как они войдут в систему? Есть ли способ сделать это только с разрешениями или это единственный ответ, чтобы код динамически перемещал файлы во время запроса, или есть какой-то очевидный шаг, о котором я даже не думаю?
Позвольте мне немного уточнить это. Независимо от того, как файл представлен на странице, пользователь может использовать браузер IE, Firefox и т. Д. Для проверки URL-адреса, с которого поступил файл. Если изображение является ссылкой, всегда есть ярлык копирования в контекстном меню для IE, и такая же функциональность в FF называется расположением ссылки копирования. Если изображение отображается встроенным как часть страницы, пользователь IE может щелкнуть правой кнопкой мыши и выбрать свойства, чтобы просмотреть URL-адрес, в FF такая же функциональность присутствует для просмотра свойств, но есть еще более быстрый и удобный вариант, помеченный как копия изображения. Если пользователь знает URL-адрес файла, если местоположение или имя файла не изменяется, он может использовать этот URL-адрес без проверки подлинности в приложении CF.
Если я изменю разрешения NTFS / общего ресурса, чтобы IUSR не мог видеть содержимое, тогда мое приложение CF и IIS не могут его выдвинуть. Какую стратегию использовать для предоставления файла в приложении CF, который не оставляет эту дыру открытой?