Я хотел бы знать, что люди считают лучшей практикой для защиты разделов администрирования веб-сайтов, особенно с точки зрения аутентификации / доступа.
Конечно, есть очевидные вещи, такие как использование 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 для административных и обычных страниц, например, поместив раздел администратора в другой домен. [Даниэль Папасян]
- Если возможно, рассмотрите возможность сохранения административного сайта в частной подсети, вне общедоступного Интернета. [Джон Хартсок]
- Повторно выпустить билеты авторизации / сеанса при переходе между административным и обычным контекстами использования веб-сайта [Ричард Дж. П. Ле Гуен]