Это все хорошие ответы ... Обычно мне нравится добавлять пару дополнительных уровней для моих административных разделов. Хотя я использовал несколько вариантов темы, они обычно включают одно из следующего:
Если веб-сайт требует входа в систему как для обычных действий, так и для администраторов, например для форума, я бы использовал отдельные логины, которые используют одну и ту же базу данных пользователей. Это гарантирует, что XSRF и кража сеансов выиграют » t разрешить злоумышленнику доступ к административным областям.
Кроме того, если раздел администратора находится в отдельном подкаталоге, защита этого подкаталога с помощью аутентификации веб-сервера (например, .htaccess в Apache) может быть хорошей идеей - тогда кому-то понадобится и то, и другое. пароль и пароль пользователя.
Сокрытие пути администратора почти не дает повышения безопасности - если кто-то знает действительные данные для входа в систему, он, скорее всего, также сможет узнать путь к инструменту администратора, поскольку он либо фишинг, либо кейлоггинг вас, либо получил его с помощью социальной инженерии (которая, вероятно, тоже укажет путь).
Защита от перебора, такая как блокировка пользователя I P после 3 неудачных попыток входа в систему или требование CAPTCHA после неудачного входа в систему (не для первого входа в систему, поскольку это очень раздражает законных пользователей).
Имейте хороший пароль администратора.
Не «123456»
, а последовательность букв, цифр и специальных символов, достаточно длинная, скажем, 15-20 символов. Например "ksd83, '| 4d # rrpp0% 27 & lq (go43 $ sd {3>"
.
Добавьте паузу для каждой проверки пароля, чтобы предотвратить атаку методом грубой силы.
Да, после написания этого, я понимаю, что этот ответ можно обобщить как "ничего особенного для логина администратора, это все средства безопасности, которые должны использоваться для любого логина".
Вот некоторые другие вещи, которые следует рассмотреть:
Если вы используете только один логин для пользователей, имеющих как привилегии обычного пользователя, так и администратора, регенерируйте их идентификатор сессии (будь то cookie или GET-параметр, или что-то еще...) при изменении уровня привилегий... как минимум.
Так что если я войду в систему, сделаю кучу обычных пользовательских действий, а затем зайду на страницу администратора, то регенерирую свой идентификатор сессии. Если я затем перехожу со страницы администратора на страницу обычного пользователя, снова регенерируйте мой ID.
Это очень сильно зависит от того, какие данные вы хотите защитить (требования законодательства и т. Д.).
Многие предложения касаются аутентификации ... Я думаю, вам просто стоит подумать об использовании аутентификации OpenId / Facebook в качестве входа в систему. (Скорее всего, они потратят больше ресурсов на безопасность аутентификации, чем вы)
Сохраните изменения, а также обновите значения в базе данных. Таким образом вы можете откатить изменения от пользователя X или между датами X и Y.
Мы используем Аутентификацию Windows
для доступа администратора. Это наиболее практичный способ защиты административных областей, при этом аутентификация отделена от того, что применяется к обычным конечным пользователям. Системный администратор управляет учетными данными для доступа администратора и применяет политики паролей к учетной записи пользователя домена.
Добавьте поле пароля и секретный вопрос, который будет известен администратору, например как звали вашу первую девушку, или задавайте вопросы в случайном порядке каждый раз при просмотре панели администратора.
Возможно, вы всегда можете поместить раздел администрирования в большой каталог, например
Но это не очень хорошо, ха.
Возможно, вы могли бы включить строку запроса на домашнюю страницу, например:
Когда это произойдет, появится поле имени пользователя и пароля.
Строгий способ - иметь две совершенно разные "фермы", включая базы данных, серверы и все остальное, и перенести данные из одной фермы в другую. Большинство современных крупномасштабных систем используют этот подход (Vignette, SharePoint и т.д.). Обычно это называется наличием различных стадий "стадия редактирования" -> "стадия предварительного просмотра" -> "стадия доставки". Этот метод позволяет вам относиться к содержимому/конфигурации так же, как к коду (dev->qa->prod).
Если вы менее параноидальны, вы можете иметь единую базу данных, но иметь только ваш административный раздел, доступный на серверах "редактирования". Я имею в виду, чтобы только скрипты/файлы редактирования были размещены на сервере редактирования.
Естественно, стадия редактирования должна быть доступна только в локальной интрасети и/или с использованием VPN.
Это может показаться излишеством и не самым простым решением для всех случаев использования, но это определенно самый надежный способ.
Обратите внимание, что такие вещи, как "иметь надежные пароли администратора", хороши, но все равно оставляют вашего администратора открытым для умных атак всех видов.
Я не заметил, чтобы кто-то упоминал о хранении/проверке пароля администратора. Пожалуйста, не храните PW в виде обычного текста, и желательно даже не такого, который можно изменить - используйте что-то вроде соленого хэша MD5, чтобы, по крайней мере, если кто-то случайно получит сохраненный "пароль", у него не будет ничего особо полезного, если только он не знает вашу схему соли.