2012-10-30 2 views
0

Мне нужно знать, насколько безопасен мой код аутентификации пользователя, который я использую в своих php-приложениях.лучший и безопасный способ аутентификации пользователя в приложении php

Это моя Войти функцию проверки

// Is Login 
//********************************************************************************* 
public function isLogin() 
{ 
    $validation = new Validation(); 

    if(!$validation->isEmpty($_SESSION["AdminId"]) && !$validation->isEmpty($_SESSION["AdminUsername"]) && !$validation->isEmpty($_SESSION["AdminName"])) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

У меня есть AUTHENTICATE файл, который я называю из верхней части страницы каждого учетной записи пользователя, которая, как под

if (!$admin->isLogin()) 
{ 
    header("Location: index.php?type=warning&msg=" .urlencode(ADMIN_INVALID_LOGIN)); 
    exit(); 
} 

На сессии значения, например имя_пользователя_администратор является фактическое имя пользователя admin, adminname - это алфавитное имя администратора, а adminid - это идентификатор записи из таблицы mysql, такой как $ _SESSION ["Adminusername"] = administrator, хотя я сохраняю это значение после его encypting.

мне нужно знать, это безопасный способ просто хранить значения и проверять их, или мне нужно иметь какое-то заранее функциональность, чтобы сделать его более безопасным, таким как соль или время проверки и т.д.

I оценят ваши предложения и отзывы. Если возможно, ваш аутентифицированный код/​​класс.

Заранее спасибо. Amardeep Singh

+1

Возможно, лучше для http://codereview.stackexchange.com/. –

+1

Вам лучше отправить идентификатор сообщения в url вместо фактического текста сообщения, таким образом вам не придется беспокоиться о кодировании и длине сообщения, поскольку длина URL-адреса имеет максимальный предел длины, и его можно легко достичь, если вы отправите целое сообщение в URL-адрес. – Buksy

+0

@buksy - привет, я думаю, что вы неправильно поняли мой вопрос. Я не обеспокоен сообщением, а безопасным способом проверить, является ли пользователь логином или нет. – Asnexplore

ответ

0

использование сеанса регенерировать идентификатор, чтобы получить новый идентификатор в каждом запросе, так и может предотвратить угон сессий .. прочитайте это руководство: http://php.net/manual/en/function.session-regenerate-id.php

0

Я храню это значение после encypting его

Я не понимаю ... Почему вы шифруете имя администратора?

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

Поскольку HTTP не имеет гражданства, каждый сеанс идентифицируется идентификатором, который в основном сохраняется в файле cookie на стороне клиента. Каждый ваш запрос на этот сервер содержит этот идентификатор безопасности, поскольку это единственный способ, которым ваш сервер мог идентифицировать посетителя.

Если вы используете HTTP-Transport, ваши данные (далее также ваш SID) отправляются через Интернет без шифрования. Таким образом, хакер может прочитать ваш SessionID и перенести ваш сеанс (который содержит данные в User-Data). Чтобы этого избежать, вы можете принудительно установить соединение HTTPS для зарегистрированных пользователей.

Если у вас есть возможность переключать все ваши страницы на https-only, сделайте это. Если вы должны переключаться между http и https (например, https, только если пользователь зарегистрирован), становится действительно трудно гарантировать безопасность!

+0

Что бы вы предложили, чтобы сделать мою аутентификацию безопасной?Пожалуйста, дайте мне знать – Asnexplore

+0

Я не знаю вашу ситуацию и насколько безопасна эта область. Многие приложения игнорируют этот риск безопасности, потому что это может быть тихой большой задачей для захвата SID, и хакер не знает, если сеанс даже содержит зарегистрированного пользователя или нет. Если вам не важно, настройте сервер только для доставки HTTPS-запросов. –

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