#1 2015.07.21 22:40

koji
Участник
Зарегистрирован: 2014.07.13
Сообщений: 72
Карма: 3
Профиль

использование password_hash()

http://php.net/manual/ru/function.password-hash.php

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

Код:

1
span style="color: #0000BB"><?phpecho password_hash("rasmuslerdorf", PASSWORD_DEFAULT)."\n";//Результатом выполнения данного примера будет что-то подобное://$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a?>

но мне почему-то хочется сделать так:

Код:

1
span style="color: #0000BB"><?phpecho password_hash(md5("rasmuslerdorf"), PASSWORD_DEFAULT)."\n";?>

что скажете?

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

Как она кодирует данные, пароль в md5 и добавляет соль или пароль без md5 и соль?

Неактивен

#2 2015.07.22 09:01

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: использование password_hash()

http://habrahabr.ru/post/194972/ тут почитай.
md5 не нужен. алгоритм по умолчанию - bcrypt. соль добавляется в результатирующий хэш.

Неактивен

#3 2015.07.22 13:18

koji
Участник
Зарегистрирован: 2014.07.13
Сообщений: 72
Карма: 3
Профиль

Re: использование password_hash()

Gemorroj
а как с куками?  ведь в куки лучше писать md5(password_hash()), простая передача хеша с солью аналогична тому, чтобы выложить БД.
что порекомендуешь?

Неактивен

#4 2015.07.22 14:55

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: использование password_hash()

зачем тебе в куках захешированный пароль? там обычно кука с сессией. кража ее, даст проблему только на уровне этой сессии, и если злоумышленник не успел сделать что-то плохое за время ее жизни, то все само собой нормализуется.
получение же хоть какого хэша в куке, по которому происходит авторизация, равносильна открытому паролю. поскольку злоумышленник сможет по нему авторизоваться. поэтому разницы, будет в куке результат md5(password_hash()) или password_hash() никакой нет.

Неактивен

#5 2015.07.23 18:12

koji
Участник
Зарегистрирован: 2014.07.13
Сообщений: 72
Карма: 3
Профиль

Re: использование password_hash()

раньше я передавал сессию в строку: писал айди и хеш пароля в $_SESSION и потом делал выборку по айди и сравнивал пароль в переменной сессии с тем, что в бд, если совпадал, то считал пользователя авторизованным.
а как на куках сравнивать?
или тут тоже писать айди и хеш пароля в переменую $_SESSION и в ссылках уже не передавать SID, а в php.ini просто включить "сессион юс куки"

Отредактировано koji (2015.07.23 18:13)

Неактивен

#6 2015.07.23 18:16

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: использование password_hash()

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

Неактивен

#7 2015.07.23 19:16

koji
Участник
Зарегистрирован: 2014.07.13
Сообщений: 72
Карма: 3
Профиль

Re: использование password_hash()

Не совсем понимаю как проверять что он авторизован и давать ему доступ к анкете. Он зашел и его браузер отдал куку с сессией. А как узнать как он в БД записан?
Я так делал:

Код:

1
span style="color: #0000BB"><?phpif(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:17)

Неактивен

#8 2015.07.23 20:12

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: использование password_hash()

пароль можно не проверять даже

Неактивен

#9 2015.07.24 20:20

koji
Участник
Зарегистрирован: 2014.07.13
Сообщений: 72
Карма: 3
Профиль

Re: использование password_hash()

Gemorroj, то есть получается так: Куки дают понять скрипту какой файл сессии принадлежит пользователю, который сейчас на сайте. Этот файл сессии, хранящийся в папке tmp, отдает переменную $_SESSION['id'] (ее создаю я, при успешной авторизации пользователя), после мне достаточно запросить в БД существование такого ID (указанного в переменной $_SESSION['id']) и все даем доступ юзеру к данным. Но изменение данных разрешать только по подтверждению с вводом пароля.
Верно понимаю принцип работы? очень важно не запороть...

Неактивен

#10 2015.07.24 22:05

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: использование password_hash()

да. именно так.

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.011 s