2010-05-04 7 views
3

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

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

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

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

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

ответ

2

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

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

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

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

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

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

+0

@ The Rook: спасибо вам за то, что выдвинули основные правила. Теперь я вижу, что SSL - это просто начало. Я определенно буду искать способы удостовериться, что «средние» хакеры не будут слишком легко взломать систему входа в систему, и я должен позволить клиенту понять, что для его же блага достаточно долго выполнять такую ​​«маленькую» вещь:) –

0

Это много обсуждался на SO уже, вот некоторые полезные ссылки:

+0

@Sarfraz: спасибо за ссылки, я смотрю на них :) –

+0

@Michael Mao: Добро пожаловать .... – Sarfraz

+0

-1 его невозможно иметь безопасный сеанс без https. Это явное нарушение owasp a3: «Сломанная аутентификация и управление сеансами». Извините, но я должен дать -1 кому-либо из тех, кто использует уязвимость, а именно правила. – rook

1

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

+0

@nduplessis: Да, это то, чего я боюсь. Я не думаю, что клиент потратит десять центов на verisign. OpenSSL кажется немного сложным для кода с нуля для меня. Может быть, сервер хостинга будет таким добрым, чтобы предлагать SSL-канал? –

+2

Не требуется специальной кодировки. Просто получите сертификат SSL. Вы можете найти много за $ 20. Вы будете устанавливать Webhost за небольшую плату. Маленькая цена за кусок разума. – webbiedave

+0

@webbiedave: Это так замечательно слышать. Я убежу клиента сделать это со своим веб-хостингом. –

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