Вы не зашли.
Главная » PHP » использование password_hash()
#1. koji Off (3)
Участник
2015.07.21 22:10
http://php.net/manual/ru/function.password-hash.php

для новой функции дают пример

Код:
<?php
echo password_hash("rasmuslerdorf"PASSWORD_DEFAULT)."\n";
 
//Результатом выполнения данного примера будет что-то подобное:
 
//$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
 
?>
но мне почему-то хочется сделать так:

Код:
<?php
echo password_hash(md5("rasmuslerdorf"), PASSWORD_DEFAULT)."\n";
?>
что скажете?

Еще меня волнует что писать в cookie, хеш: $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a  ?

Как она кодирует данные, пароль в md5 и добавляет соль или пароль без md5 и соль?
#2. Gemorroj Off (107)
Administrator
2015.07.22 09:09
http://habrahabr.ru/post/194972/ тут почитай.
md5 не нужен. алгоритм по умолчанию - bcrypt. соль добавляется в результатирующий хэш.
#3. koji Off (3)
Участник
2015.07.22 13:01
Gemorroj
а как с куками?  ведь в куки лучше писать md5(password_hash()), простая передача хеша с солью аналогична тому, чтобы выложить БД.
что порекомендуешь?
#4. Gemorroj Off (107)
Administrator
2015.07.22 14:02
зачем тебе в куках захешированный пароль? там обычно кука с сессией. кража ее, даст проблему только на уровне этой сессии, и если злоумышленник не успел сделать что-то плохое за время ее жизни, то все само собой нормализуется.
получение же хоть какого хэша в куке, по которому происходит авторизация, равносильна открытому паролю. поскольку злоумышленник сможет по нему авторизоваться. поэтому разницы, будет в куке результат md5(password_hash()) или password_hash() никакой нет.
#5. koji Off (3)
Участник
2015.07.23 18:06
раньше я передавал сессию в строку: писал айди и хеш пароля в $_SESSION и потом делал выборку по айди и сравнивал пароль в переменной сессии с тем, что в бд, если совпадал, то считал пользователя авторизованным.
а как на куках сравнивать?
или тут тоже писать айди и хеш пароля в переменую $_SESSION и в ссылках уже не передавать SID, а в php.ini просто включить "сессион юс куки"
Отредактировано koji (2015.07.23 18:06)
#6. Gemorroj Off (107)
Administrator
2015.07.23 18:06
в ссылках никогда сессию вставлять не нужно. отключи эту возможность и считай что у всех пользователей есть есть куки.
в сессию пиши все что хочешь. выборку можешь делать по id пользователя из сессии.
#7. koji Off (3)
Участник
2015.07.23 19:07
Не совсем понимаю как проверять что он авторизован и давать ему доступ к анкете. Он зашел и его браузер отдал куку с сессией. А как узнать как он в БД записан?
Я так делал:
Код:
<?php
if(isset($_SESSION['id']) && ctype_digit($_SESSION['id'])) {
  $res=$mysqli->query("SELECT id,login,password,email FROM users WHERE id=".$_SESSION['id']);
  if($row=$res->fetch_row()) {
    if($row[2]==$_SESSION['pass']) {
        $user=$row[1];
//...
 
//на страницах include предыдущего кода и проверка
if(isset($user)) {
 
//пользователь авторизован
?>
Отредактировано koji (2015.07.23 19:07)
#8. Gemorroj Off (107)
Administrator
2015.07.23 20:08
пароль можно не проверять даже
#9. koji Off (3)
Участник
2015.07.24 20:08
Gemorroj, то есть получается так: Куки дают понять скрипту какой файл сессии принадлежит пользователю, который сейчас на сайте. Этот файл сессии, хранящийся в папке tmp, отдает переменную $_SESSION['id'] (ее создаю я, при успешной авторизации пользователя), после мне достаточно запросить в БД существование такого ID (указанного в переменной $_SESSION['id']) и все даем доступ юзеру к данным. Но изменение данных разрешать только по подтверждению с вводом пароля.
Верно понимаю принцип работы? очень важно не запороть...
#10. Gemorroj Off (107)
Administrator
2015.07.24 22:10
да. именно так.
Страниц: 1
Главная
WEB
PunBB Mod v0.6.2
0.014 s