Есть ли способ защитить папки в ColdFusion без использования Application.cfc в каждой папке?

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

Если файл /test/thisfile.cfm является безопасным и отправляет пользователя, не вошедшего в систему, на страницу входа в систему, однако папка /test/test2/ также должна иметь Application.cfc, иначе пользователь может напрямую перейти к test/test2/thatfile.cfm без проблем.

Я знаю, что должен быть лучший способ, чем этот, я просто не уверен, что это такое, и все в Google говорит мне использовать «Мастер входа в систему» ​​или установить фреймворк. Ни то, ни другое не вариант для меня.

Еще одно соображение: к сожалению, это должно работать в MX 7. Если есть лучшие варианты в CF 9, то буду рад их услышать, но в приоритете MX 7.


person mawburn    schedule 22.06.2012    source источник
comment
Если в вашей папке нет файла Application.cfm или cfc, CF следует перейти на следующий уровень папки и найти его там. Обычно вам нужно было бы попытаться НЕ иметь каталог, использующий application.cfm, создав пустой application.cfm в этом конкретном каталоге. У вас есть Application.cfm в корне?   -  person Limey    schedule 22.06.2012
comment
Application.cfc в корне — это то, что я хотел использовать для проверки входа и отправки незарегистрированных пользователей на страницу входа. Тем не менее, я смог без проблем перейти непосредственно к подпапкам и просмотреть файлы.   -  person mawburn    schedule 23.06.2012
comment
Один файл Application.cfc (или Application.cfm) в папке верхнего уровня будет каскадно опускаться вниз, если в каком-либо каталоге между этим файлом и файлом верхнего уровня нет файла Application.cf~. Если на пути определенно нет файла Application.cf~, то в вашем Application.cfc отсутствует/неправильная логика для предотвращения доступа к соответствующим файлам.   -  person Peter Boughton    schedule 23.06.2012


Ответы (1)


Без файла Application.cfc или MVC Framework вы можете вручную запускать каждый «защищенный» файл CFM с проверкой переменной сеанса:

<cfif (NOT structKeyExists( session, "isLoggedIn" )) OR (session.isLoggedIn = false)>
    <cflocation url="/" />
</cfif>

Конечно, это очень кропотливая и непростая практика, но иногда просто работаешь с тем, что есть.

person Adrian J. Moreno    schedule 22.06.2012
comment
Вы можете просто поместить этот фрагмент кода один раз в application.cfc onRequestStart. - person Dale Fraser; 23.06.2012
comment
Я не думаю, что это само по себе должно быть помечено как ответ. Мы должны вернуться к этому утверждению из комментария выше: Application.cfc в корне [...] Однако я смог без проблем перейти непосредственно к подпапкам и просмотреть файлы. Если это так, вы не рассказываете нам всю историю, и происходит что-то еще. Давайте исправим это должным образом. Можете ли вы расширить свой вопрос, включив соответствующую структуру каталогов и расположение: a) Application.cfc; б) файлы, которые соблюдают его; c) файлы, которые не его соблюдают. - person Adam Cameron; 23.06.2012