2010-05-28 3 views
1

Мне всегда интересно, что системы входа, которые я создал, уязвимы для атак или нет.Каков наилучший способ создания системы входа?

Как и многие другие программисты, я также использую сеансы для хранения определенного токена токена, чтобы узнать статус входа в систему. Cookies для сохранения имени пользователя или даже когда-либо сохраненного статуса.

Что мне интересно, правильно ли это? Есть ли какой-нибудь подход лучше этого?

+0

слишком общий. Вы не говорите, каковы ваши критерии и ограничения для «лучшего». – symcbean

ответ

1

Вы можете создать свои собственные проверки в сеансе. Убедитесь, что он создан одним и тем же агентом пользователя и с одного и того же IP-адреса.

Кроме этого, сеансы довольно прочные.

В разделе входа в систему, вы могли бы сделать что-то вроде:

$_SESSION['_user_agent'] = $_SERVER['HTTP_USER_AGENT']; 
$_SESSION['_remote_addr'] = $_SERVER['REMOTE_ADDR']; 

, а затем вы можете сделать проверку в каждом запросе:

function sessionIsOK() 
{ 
    return ($_SESSION['_user_agent'] == $_SERVER['HTTP_USER_AGENT'] && 
     $_SESSION['_remote_addr'] == $_SERVER['REMOTE_ADDR']); 
} 
+0

+1, проверка User-Agent имеет смысл. Однако удаленный IP-адрес не является надежным. Иногда пользователи сидят за прокси-кластерами, где IP-доступ зависит от запроса для запроса. (лучший пример: пользователи AOL). – mario

+0

Я не знал об этом. Я действительно думал, что все IP-адреса довольно устойчивы, если соединение не будет потеряно. – arnorhs

0

Я думаю, что имеет значение, используете ли вы https: если вы используете http вместо https, то система имеет много уязвимостей: например. replay и man-in-the-middle/relay.

0

Альтернативой общим системам входа в систему PHP является HTTP-аутентификация. Это не требует использования сеансов/файлов cookie. Особенно аутентификация HTTP Digest более безопасна, чем незашифрованная. < Форма > логинов. (Большинство хостинг-провайдеров не предоставляют SSL. И если большинство веб-приложений FLOSS редко настраивают его.)

Однако есть некоторые недостатки в юзабилити, которые могут быть смягчены только тяжелым использованием DHTML/AJAX. И это немного снижает производительность сервера. И самое главное: слишком сложно реализовать право для большинства программистов.

Если достаточно простой системы входа в систему PHP, зависит от типа вашего приложения.

+1

Но не HTTP-аутентификация багги - это некоторые браузеры. – Starx

+1

Нет, это не так. Это довольно старая особенность. Тем не менее, это не должно использоваться ни для чего, пока вам не обязательно. –

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