Рекомендации по обеспечению безопасности веб-файлов для ColdFusion 8 в IIS6 или IIS7 - PullRequest
2 голосов
/ 18 февраля 2009

Допустим, у нас есть веб-сайт с приложением 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, который не оставляет эту дыру открытой?

1 Ответ

6 голосов
/ 18 февраля 2009

Вы можете написать страницу CFM, которая обслуживает изображения. Тогда вы просто убедитесь, что они аутентифицированы внутри ОВЛХ.

<!-- something like this -->
http://localhost/GetFile.cfm?file=foobar.jpg

В GetFile.cfm вы должны сделать что-то вроде:

<!-- the filename part is what the browser will pre-popualate the file name in the download dialog as -->
<CFHEADER name="Content-disposition" value="attachment;filename=picture92352.ext"> 
<CFCONTENT type="text/plain" file="\\fileserver\folder1\folder2\picture92352.ext">

Посмотрите на различные MIME типы .

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

...