Я хотел бы знать, что люди считают лучшей практикой для защиты разделов администрирования веб-сайтов, особенно с точки зрения аутентификации / доступа.
Конечно, есть очевидные вещи, такие как использование SSL и регистрация всего доступа, но мне интересно, где именно выше этих основных шагов люди считают установленной планку.
Например:
- Вы просто полагаетесь на тот же механизм аутентификации, который используете для обычных пользователей? Если нет, то что?
- Вы используете раздел «Администратор» в том же «домене приложения»?
- Какие шаги вы предпримете, чтобы сделать административный раздел неоткрытым? (или вы отвергаете всю эту «безвестность»)
Пока что предложения от ответчиков включают:
- Ввести искусственную паузу на стороне сервера при каждой проверке пароля администратора, чтобы предотвратить атаки методом грубой силы [Developer Art]
- Используйте отдельные страницы входа для пользователей и администратора, используя одну и ту же таблицу БД (чтобы запретить XSRF и кражу сеансов, предоставляя доступ к областям администратора) [Thief Master]
- Также рассмотрите возможность добавления собственной аутентификации веб-сервера в админку (например, через .htaccess) [Thief Master]
- Рассмотрите возможность блокировки IP-адресов пользователей после ряда неудачных попыток входа администратора [Thief Master]
- Добавить капчу после неудачных попыток входа администратора [Thief Master]
- Обеспечьте одинаково надежные механизмы (с использованием вышеуказанных методов) как для пользователей, так и для администраторов (например, не относитесь к администраторам специально) [Lo'oris]
- Рассмотрите возможность аутентификации второго уровня (например, сертификаты клиентов, смарт-карты, пространство для карт и т. Д.) [JoeGeeky]
- Разрешать доступ только с доверенных IP-адресов / доменов, если возможно, добавьте проверку в основной конвейер HTTP (например, через HttpModules). [JoeGeeky]
- [ASP.NET] Заблокируйте IPrincipal и Principal (сделайте их неизменяемыми и неперечисляемыми) [JoeGeeky]
- Повышение уровня федеративных прав - например, электронное письмо другим администраторам при обновлении прав любого администратора. [JoeGeeky]
- Рассмотрите детализированные права для администраторов - например, вместо прав на основе ролей, определите права для определенных действий для каждого администратора [JoeGeeky]
- Ограничьте создание администраторов - например, администраторы не могут изменять или создавать другие учетные записи администраторов. Используйте для этого заблокированный клиент-суперадмин. [JoeGeeky]
- Рассмотрим клиентские сертификаты SSL или брелоки типа RSA (электронные токены) [Дэниел Папасян]
- При использовании файлов cookie для аутентификации используйте отдельные файлы cookie для административных и обычных страниц, например, поместив раздел администратора в другой домен. [Даниэль Папасян]
- Если возможно, рассмотрите возможность сохранения административного сайта в частной подсети, вне общедоступного Интернета. [Джон Хартсок]
- Повторно выпустить билеты авторизации / сеанса при переходе между административным и обычным контекстами использования веб-сайта [Ричард Дж. П. Ле Гуен]
security
authentication
UpTheCreek
источник
источник
Ответы:
Это все хорошие ответы ... Обычно я люблю добавлять пару дополнительных слоев для своих административных разделов. Хотя я использовал несколько вариаций темы, они обычно включают одно из следующих:
источник
Если веб-сайт требует входа как для обычных действий, так и для администраторов, например для форума, я бы использовал отдельные логины, которые используют одну и ту же базу данных пользователей. Это гарантирует, что XSRF и кража сеансов не позволят злоумышленнику получить доступ к административным областям.
Кроме того, если раздел администратора находится в отдельном подкаталоге, защита этого подкаталога с помощью проверки подлинности веб-сервера (например, .htaccess в Apache) может быть хорошей идеей - тогда кому-то понадобится и этот пароль, и пароль пользователя.
Скрытие пути администратора почти не дает повышения безопасности - если кто-то знает действительные данные для входа в систему, он, скорее всего, также сможет узнать путь к инструменту администратора, поскольку он либо фишинг, либо кейлоггинг вас, либо получил его через социальную инженерию (что, вероятно, выявит путь тоже).
Также может быть полезна защита от перебора, такая как блокировка IP-адреса пользователя после 3 неудачных попыток входа в систему или требование CAPTCHA после неудачного входа в систему (не для первого входа в систему, так как это очень раздражает законных пользователей).
источник
Да, после написания я понимаю, что этот ответ можно резюмировать как «ничего особенного для входа в систему администратора, все они являются функциями безопасности, которые следует использовать для любого входа в систему».
источник
Если вы используете только один логин для пользователей, которые имеют как привилегии обычного пользователя, так и права администратора, повторно сгенерируйте их идентификатор сеанса (будь то файл cookie, параметр GET или что-то еще ...) при изменении уровня привилегия ... по крайней мере.
Поэтому, если я вхожу в систему, выполняю кучу обычных пользовательских вещей, а затем посещаю страницу администратора, повторно сгенерирую свой идентификатор сеанса. Если затем я перейду со страницы (страниц) администратора на страницу обычного пользователя, заново создайте свой идентификатор.
источник
Имейте хороший пароль администратора.
Нет,
"123456"
но последовательность букв, цифр и специальных символов, достаточно длинная, скажем, 15-20 символов. Нравится"ksd83,'|4d#rrpp0%27&lq(go43$sd{3>"
.Добавьте паузу для каждой проверки пароля, чтобы предотвратить атаку методом грубой силы.
источник
Вот еще несколько вещей, которые следует учитывать:
источник
Мы используем
Windows Authentication
для доступа администратора. Это наиболее практичный способ защиты административных областей, при этом аутентификация отделена от того, что применяется к обычным конечным пользователям. Системный администратор управляет учетными данными для доступа администратора и применяет политики паролей к учетной записи пользователя домена.источник
Строгий способ - иметь две совершенно разные «фермы», включая базы данных, серверы и все остальное, и перемещать данные с одной фермы на другую. Этот подход используется в большинстве современных крупномасштабных систем (Vignette, SharePoint и т. Д.). Обычно он имеет разные этапы «этап редактирования» -> «этап предварительного просмотра» -> «этап доставки». Этот метод позволяет обрабатывать контент / конфигурацию так же, как и код (dev-> qa-> prod).
Если вы менее параноик, у вас может быть одна база данных, но на «редактирующих» серверах будет доступна только ваша административная секция. Я имею в виду, что на сервере редактирования должны быть только сценарии / файлы редактирования.
Естественно, этап редактирования должен быть доступен только в локальной интрасети и / или с использованием VPN.
Это может показаться излишним и может быть не самым простым решением для всех случаев использования, но, безусловно, это самый надежный способ решения проблем.
Обратите внимание, что такие вещи, как «иметь надежные пароли администратора», хороши, но все же оставляют вашего администратора открытым для любых умных атак.
источник
Это очень сильно зависит от того, какие данные вы хотите защитить (требования законодательства и т. Д.).
Многие предложения касаются аутентификации ... Я думаю, вам просто следует рассмотреть возможность использования аутентификации OpenId / Facebook в качестве входа в систему. (Они, скорее всего, потратят больше ресурсов на безопасность аутентификации, чем вы)
Сохраняйте изменения, а также обновляйте значения в базе данных. Таким образом вы можете откатить изменения от пользователя X или между датами X и Y.
источник
Я не заметил, чтобы кто-то упоминал о хранении / проверке пароля администратора. Пожалуйста, пожалуйста, не храните PW в виде простого текста и, желательно, не храните что-то, что можно было бы перевернуть - используйте что-то вроде соленого хеша MD5, чтобы, по крайней мере, если кто-то получит сохраненный "пароль", которого у них нет ничего ужасно полезного, если только у них нет вашей солевой схемы.
источник
Добавьте поле пароля и секретный вопрос, который будет знать администратор, например, как звали вашу первую девушку, или рандомизируйте вопросы при каждом просмотре панели администратора.
Возможно, вы всегда можете поместить раздел администрирования в большой каталог, например
Но это не очень хорошо, ха.
Возможно, вы могли бы включить строку запроса на домашнюю страницу, например:
Когда это произойдет, появится поле имени пользователя и пароля.
источник