2013-08-29 3 views
2

Ненавижу делать еще один вопрос о cookie. Я читал много сейчас, и это меня смущает.COOKIE/PHP: Безопасный вход для REAL

Я видел много советов и учебников на YouTube и других сайтах от людей, которые называли себя профессионалами. Но я не могу понять это прямо. Поэтому я должен попросить мнение других людей. Okey, файлы cookie HARD безопасны. Но есть несколько вещей, которые вы можете сделать, не так ли?

Во многих учебниках PHP-программисты предпочитают хранить как имя пользователя, так и пароль в файле cookie. Что я могу понять, это довольно глупая вещь? Особенно, если вы используете это как аутентификацию на сайте. Просто спросите, существует ли файл cookie без проверки базы данных. Но это тоже недостаточно. Если кто-то отредактирует файл cookie с другим именем пользователя. BAM, полный доступ к этой учетной записи.

Итак, я думал. Это хороший способ создать и сохранить JUST токен в качестве файла cookie? Когда пользователь переходит на сайт с этим маркером cookie. Сайт запрашивает базу данных: «Кто из вас, проигравших, владеет этим?». Если это матч, и вы находитесь. Этот токен должен быть непредсказуемым, конечно! Для человеческого разума я имею в виду. И довольно сложно для атаки грубой силы.

Посмотрите на этот знак:

$salt = 'S0M3TH1N6'; 

$identifier = md5($salt . md5($username . $salt)); 
$token = md5(uniqid(rand(), TRUE)); 
$timeout = time() + 60 * 60 * 24 * 7; 

setcookie('auth', "$identifier:$token", $timeout); 

Когда этот доступ печенье, сайт вызвать базу данных, чтобы увидеть, если пользователь имеет в этом качестве маркера. Если нет, вы вернетесь на страницу входа. Если есть удар, вы можете извлечь и сохранить все остальное, что вам нужно в сеансе. Насколько я понимаю, сеансы гораздо более надежны, потому что они находятся на стороне сервера. Поэтому не храните имя пользователя и пароль в файле cookie. Потому что cookie находится на стороне клиента. И, конечно, используйте mysql_real_escape_string(); на все, что вы получаете или добавляете в базу данных.

Что вы думаете об этом? Может быть, я что-то пропустил или много. Не стесняйтесь комментировать. :)

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

+0

Это может помочь http://stackoverflow.com/a/244907/1497042 – aarryy

+0

HTTP://jaspan.com/improved_persistent_login_cookie_best_practice <- все, что вам нужно знать – PeeHaa

+0

Почему бы не использовать сеансы, если все, что вы собираетесь делать, это создать файл cookie, содержащий идентификатор сеанса? – Think

ответ

1

Вы должны просто использовать сеанс.

на журнал аутентификации установить сеанс:

session_start(); 
//login succesful?? then: 
$_session['user'] = array('fname'=>$query['fname'], 'lname'=>$query['lname']...; 

затем на каждой странице:

session_start(); 
    session_regenerate_id(); 

    if ($_SESSION['user']){ 
     echo '<pre>'; 
     echo $_SESSION['user'] 
     echo '</pre>'; 
    } 
+2

Я думаю, что он ищет постоянное решение для входа в систему, в котором все-таки требуется использование файлов cookie. Я мог ошибаться. – aarryy

+0

Я хочу использовать файл cookie, потому что он должен работать как функция «Запомнить меня». – Treps

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