Простая реализация панели администратора / персонала? - PullRequest
3 голосов
/ 04 мая 2010

Новый проект требует простой панели (страницы) для администратора и сотрудников, которые:

  • Предпочтительно не использовать SSL или какие-либо средства цифровой сертификации, просто войдите в систему через http.
  • имеет базовую аутентификацию, которая позволяет только администратору входить в систему как администратор, а любой сотрудник из группы "сотрудники". В идеале «учетные данные (пара имя-пользователя-хеш-пароль)» будут храниться в MySQL.
  • прост в настройке, если есть пакет, или стратегия проста для кодирования.
  • где-то (PHP-сессия?) Каким-то образом (включая скрипт в начале каждой страницы для проверки группы пользователей перед тем, как что-либо делать?), Он обнаружит любую недопустимую попытку пользователя получить доступ к защищенной странице и перенаправит его / ее в форму входа .
  • в то же время сохраняет высокое качество в области безопасности, о чем я беспокоюсь больше всего.

Честно говоря, я немного знаю о безопасности в Интернете и о том, как современные CMS, такие как WordPress / Joomla, справляются с этим.

У меня есть только одна мысль: мне нужно использовать соль для хеширования пароля (SHA1?), Чтобы убедиться, что любой хакер, получивший пару имени пользователя и пароля в сети, не может использовать это для входа в систему , И это то, что клиент хочет убедиться.

Но я действительно не уверен, с чего начать, есть идеи?

Ответы [ 3 ]

2 голосов
/ 04 мая 2010

Использование HTTPS является абсолютным требованием и должно использоваться в течение всей жизни сеанса. Имейте в виду, что идентификаторы сеансов используются для аутентификации браузеров, и если злоумышленник может получить его (сниффинг или xss), то ему не нужны имя пользователя / пароль. Это изложено в OWASP Top 10 2010 A3 Сломанная аутентификация и управление сеансами . Если вы хотите реализовать безопасный сеанс, вы должны прочитать эту ссылку.

md4, md5 sh0 и sha1 - все функции дайджеста сообщений, которые нельзя использовать для паролей. Любой член семьи sha-2 - хороший выбор, sha256 очень большой и отличный выбор для паролей.

Вы не должны абсолютно никогда передавать хэш пароля по сети или передавать его пользователю / злоумышленнику. Если вы отправляете хеш на сервер для аутентификации, вы ввели очень серьезную уязвимость в вашу систему. Используя SQL-инъекцию, хеш пароля можно получить из базы данных, затем этот хеш можно просто воспроизвести для аутентификации, минуя необходимость взломать хэш пароля. Это как если бы вы хранили пароли в виде открытого текста.

Используйте $ _SESSION superglobal и session_start () для поддержания вашего состояния сеанса, никогда не изобретайте заново wheal. Обработчик сеанса PHP по умолчанию безопасен и будет делать то, что вам нужно.

session_start();
if(!$_SESSION['logged_in']){
   die("Authentication required!");
}

Также убедитесь, что в вашей системе реализована защита CSRF . Используя CSRF, злоумышленник может получить доступ к административной панели, заставив браузер отправлять запросы. Обязательно протестируйте свое приложение на XSS. Это хороший бесплатный xss сканер , опять же, xss можно использовать для перехвата аутентифицированного сеанса с помощью XHR или получения значения document.cookie. Также неплохо бы проверить на наличие SQL-инъекций и других уязвимостей, wapiti поможет.

1 голос
/ 04 мая 2010

Не использование SSL оставит довольно существенную дыру во всей системе, так как довольно просто перехватить сетевой трафик

0 голосов
/ 04 мая 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...