2013-03-08 3 views
0

Я разрабатываю сайт, на котором будет раздел администратора. Я искал это и нашел противоречивую информацию (в блогах) о наилучшем способе ее реализации. Я надеюсь, что некоторые из вас, разработчики SO будут иметь опыт из первых рук.Система аутентификации с использованием Coldfusion

ли лучше иметь login.cfm и login_process.cfm файлы в пределах области или администратора после проверки подлинности была завершена затем маршрут пользователю админку? OR Действительно ли это имеет значение? Я больше склоняюсь к стороне маршрутизации пользователя в область администратора. ПОСЛЕ проверки подлинности в основном просто для того, чтобы скрыть местоположение области администрирования для людей, у которых нет учетных записей, чтобы помочь предотвратить взломы.

Ссылки, подтверждающие ваш ответ, оцениваются, но не требуются, если я не получаю противоречивые ответы. :)

+0

Я всегда помещал свои файлы для входа в свою охраняемую зону. Его легче управлять. Затем в application.cfc я могу проверить, содержит ли cgi.script_name '/ secure /' и session.adminid "", чтобы убедиться, что файл cfm файла внутри всей структуры не доступен. Я сделал это таким образом более 10 лет, никаких проблем. – steve

ответ

3

Неважно, где ваши сценарии входа в систему.

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

Таким образом, процесс аутентификации должен состоять из двух шагов.

  1. аутентификации (ваши login.cfm и login_process.cfm скрипты). Это должно проверить учетные данные пользователей, а затем, как правило, установить что-то в области пользователя session.

  2. Авторизация (в вашей зоне администратора). Это должно проверить, не вошел ли пользователь в систему (смотря на переменную session, установленную на шаге 1), и (если вы выполняете авторизацию на основе роли или разрешений) имеет ли пользователь доступ к запрашиваемому ресурсу, отображая ошибку или перенаправление, если они не являются.

Если вы пытаетесь защитить весь каталог, то это, как правило, легче всего осуществить это в application.cfm|cfc в каталоге администратора (поэтому он автоматически вызывается на всех страницах в этом каталоге). Если вы идете по этому маршруту, проще всего ставить сценарии login вне защищенного каталога, чтобы вы не входите в систему, чтобы пользователи могли войти в систему, чтобы перейти к сценарию входа.

+0

Я не думал о защите всего каталога - мне очень нравится этот подход. Можете ли вы предоставить ссылку или объяснить, как это сделать?Мое предположение заключается в том, что вы задали переменные сеанса на корневом уровне application.cfm | cfc (через login.cfm и login_process.cfm), а затем просто выполните проверку уровня admin/Application.cfm | cfc, правильно? – HPWD

+0

Кроме того, мне нужно будет включить файл root.cfm | cfc в файле admin \ application.cfm | cfc? – HPWD

+0

У меня нет прямой связи, но это должно быть довольно легко. В процессе входа в систему просто установите что-то постоянное после аутентификации пользователя, например 'session.username = # username #', а затем в admin/application.cfm добавьте предложение типа ' '. Возможно, вам придется включить родителя, если вы делаете там другие интересные вещи. Если вы используете application.cfc, это будет использоваться в методе 'onRequestStart'. –

2

Помните, что cf может защищать только файлы cfm, он не остановит никого, кто обращается к изображениям .html, .pdf docs и т. Д., Если они знают URL. Так что это зависит от того, что вы хотите защитить. Если это простая область администрирования, это, скорее всего, будет достаточно. Для обеспечения лучшей безопасности, если вам нужно защищать файлы и ресурсы non cf, вы должны использовать htaccess или аналогичные для защиты целых папок и всего в них. Есть способы сделать это, используя cfcontent в небольшом масштабе.

Смежные вопросы