PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (24): В начало « ... 13 14 15 16 [17] 18 19 20 21 ... » В конец

> Найдено сообщений: 359
Hapson Отправлено: 02 Августа, 2013 - 02:01:04 • Тема: Запись временных данных в $_SESSION • Форум: Вопросы новичков

Ответов: 7
Просмотров: 422
Okula пишет:
Тогда это магия вуду)))
Надеюсь записывал данные в переменную $_SESSION и использовал эту переменную ты не в 1-ом файле?

Нет. Задача-то и была записать переменную в одном файле, а вывести в другом после отправки поста.
(Добавление)
Проверил всю папку - везде закомментировал старт сессии и автостарт выключен
Hapson Отправлено: 02 Августа, 2013 - 01:54:59 • Тема: Запись временных данных в $_SESSION • Форум: Вопросы новичков

Ответов: 7
Просмотров: 422
Okula
Нет, session.auto_start off
а session_start() я закомментировал специально.
Hapson Отправлено: 02 Августа, 2013 - 01:45:59 • Тема: Запись временных данных в $_SESSION • Форум: Вопросы новичков

Ответов: 7
Просмотров: 422
Всем привет!
Сейчас вот столкнулся с такой штукой.
Задача в общих чертах такова:
есть модуль авторизации, который выводит форму или приветствие вверху страницы
если юзер ввел неверные данные, не ввел все или вообще нажал кнопку регистрации, то хочу выводить разные формы в область контента, то есть в совсем другой див.

Ну с выводом форм кое как разбираюсь. Но вот еще возникла необходимость выводить над формой сообщение. К примеру, если пользователь ввел некорректные данные или не заполнил поля, то выводится одна и та же форма, которая лежит в отдельном файлике. Однако, нужно над формой писать разные сообщения, типа введены не все данные и данные не верны.

Долго думал, как передать из модуля авторизации переменную с сообщением. И решил попробовать через сессию. И какого же было мое удивление, что строка записалась в $_SESSION без session_start(). То есть я не стартовал сессию, а просто написал
$_SESSION['auth_incorrect'] = 'Данные не верны';

Это нормально? Можно ли вообще пользоваться $_SESSION для передачи данных между перегрузками страницы? К примеру написать class MessageHandler{}, который будет ловить месседжи и ерроры в $_SESSION ??
Hapson Отправлено: 31 Июля, 2013 - 20:00:14 • Тема: Подключение модулей • Форум: Вопросы новичков

Ответов: 13
Просмотров: 602
DelphinPRO пишет:
Есл нужно выводить именно форму - то делаете отдельную страницу авторизации и при случае редиректите туда. Если нужно просто вывести сообщение об ошибке - то напишите модуль SystemMessage() который будет аккумулировать системные сообщения от разных частей системы и выводить их в указанном месте.

Да, такой модуль нужен обязательно. А здесь нужно именно форму. То есть, если пользователь ввел что-то не то, то передается гет:
index.php?mod=auth&error=incorrect - некорректные данные, выводим форму
index.php?mod=auth&error=empty_field - заполнены не все поля, вывод формы
index.php?mod=auth&option=register - клик по ссылке регистрации, вывод другой формы
index.php?mod=auth&option=recovery - клик по ссылке восстановления пароля, вывод еще одной формы
index.php?mod=auth&error=block - N-ое кол-во попыток входа. Здесь уже можно вывести сообщение с помощью предложенного вами модуля.

А вот все формочки я думал сделать в модуле авторизации. Как например сейчас у меня в одном файле лежит форма, а в другом приветствие.
Hapson Отправлено: 31 Июля, 2013 - 19:26:01 • Тема: Подключение модулей • Форум: Вопросы новичков

Ответов: 13
Просмотров: 602
Ну помогите еще пожалуйста.
Сделал как выше написано. В диве на странице написал ModController('mod_auth'). В классе подключается файлик модуля авторизации. Код модуля авторизации в конце принимает решение, что подключить - форму авторизации или приветствие.
А как бы сделать, чтобы при некорректных данных, выводилась форма, но только не в изначальный див, а в див контента?
Hapson Отправлено: 30 Июля, 2013 - 19:51:12 • Тема: Шифрование паролей, сессий, куков... • Форум: Вопросы новичков

Ответов: 20
Просмотров: 967
Саныч
Спасибо. Я в принципе уже написал нечто похожее.
Hapson Отправлено: 30 Июля, 2013 - 19:32:57 • Тема: Шифрование паролей, сессий, куков... • Форум: Вопросы новичков

Ответов: 20
Просмотров: 967
Саныч пишет:
Да на всех. Алгоритмы md5, sha1, sha512 на текущий момент на столько популярны, что в ближайшее время никто их не вырежет из PHP.

Понятно, спасибо.
А что лучше md5, hash(), crypt() (если в функциях тоже использовать md5)?
Саныч пишет:
то стоит ли вобще уже переживать за хеши

Ну да, почта вся есть... затупил я.
Hapson Отправлено: 30 Июля, 2013 - 19:22:25 • Тема: Шифрование паролей, сессий, куков... • Форум: Вопросы новичков

Ответов: 20
Просмотров: 967
makar3000 пишет:
Hapson Всмысле на всех? На всех версиях php?
(Добавление)
PHP 5 >= 5.1.2,

Нет, не php. Вот к примеру доступность алгоритмов в crypt() зависит от того под чем работает сервер - Windows, Linux...
Hapson Отправлено: 30 Июля, 2013 - 19:10:03 • Тема: Шифрование паролей, сессий, куков... • Форум: Вопросы новичков

Ответов: 20
Просмотров: 967
makar3000 пишет:
Да и не могу понять зачем оно вам? md5 не расшифровывается, ну только в тех случаях если пароли: 123456, 123321, qwerty

Ну да)))
Ладно, но главное-то: hash("sha512", $pass) - будет работать на всех системах?
Hapson Отправлено: 30 Июля, 2013 - 18:59:50 • Тема: Шифрование паролей, сессий, куков... • Форум: Вопросы новичков

Ответов: 20
Просмотров: 967
makar3000
Ну это понятно - двойная проверка. Я имею ввиду, что я буду вынужден после смены алгоритма юзать двойную проверку. И после смены я смогу лишь попросить пользователей сменить пароли. А если я к примеру буду вырезать из sha512 32 символа и их писать в БД, то я даже не узнаю, где хеш md5, а где sha512.

Вот поэтому я и хочу сейчас определить метод хеширования.
Hapson Отправлено: 30 Июля, 2013 - 18:32:54 • Тема: Шифрование паролей, сессий, куков... • Форум: Вопросы новичков

Ответов: 20
Просмотров: 967
caballero пишет:
в любом случае способ шифровния всегда можно поменять

Кстати...
К примеру я использую md5($pass) - уже есть 100 пользователей в БД. И тут я решил использовать hash("sha512", $pass) - как проверять те хеши, которые генерировал md5?
Hapson Отправлено: 30 Июля, 2013 - 18:08:01 • Тема: Шифрование паролей, сессий, куков... • Форум: Вопросы новичков

Ответов: 20
Просмотров: 967
caballero пишет:
если доступа к Бд нет то достаточно простого MD5
а если есть то никакое шифрование не поможет.

не заморачиватесь с проблемами которых нет

Я тоже так думаю. Но вопрос в том, стоит ли повышать время шифрования. Усложнится ли задача взломщика, если у него есть БД, хеши, соли и мой алгоритм. То есть он будет делать банальный перебор. Но перебор будет долгим за счет алгоритма. Вот мне и интересно, как долго нужно шифровать - 0.3, 0.5, 1... сек
Hapson Отправлено: 30 Июля, 2013 - 17:07:29 • Тема: Шифрование паролей, сессий, куков... • Форум: Вопросы новичков

Ответов: 20
Просмотров: 967
Vaio пишет:
http://php.net/manual/ru/faq.passwords.php

Hapson пишет:
Многие пишут, что украв куку сессии можно как-то что-то нехорошее наделать. В общих чертах - сессии не совершенны.

Украв куку сессии, он не сможет увидеть ни содержание сессии ни изменить ее.

Можешь еще добавить какие-то дополнительные хэши в сессию/куку и затем сверять их.

Понятно, мануал я читал.
Я так понял, что нет смысла извращаться с шифрованием, но и ограничиваться однократным md5 без соли тоже нельзя.
Уникальная соль пользователя хранится всегда рядом с паролем, так как нет смысла ее скрывать, если она действительно для каждого уникальна. Методы шифрования в алгоритме тоже по большому счету не имеют значения. Если алгоритм украден, то все.
То есть не важно, прогнал я пароль 5 раз через md5 или по разу через разные методы. Пусть я даже несколько раз порезал и склеил разные хеши и еще раз все захешировал - плевать.
Я так понял, важно время выполнения хеширования. Пусть это даже будет прогон через md5 100000раз. Потом по словарю проверять будет уже долго.
Из этого я делаю вывод, что нужно увеличить время хеширования, что немного увеличит безопасность, даже если украли алгоритм.

Вопрос: какое время оптимально для шифрования. Выше я привел пример, который выполняется примерно 0,3 сек. Но на время влияет и железо, так ведь? У меня на ноуте 1.6 ГГц.

И еще, немного я непонял про crypt(). Вроде как механизм шифрования имеет зависимость от системы. То есть при переносе сайта алгоритм может просто отказаться работать или будет работать не так и все хеши можно будет выбросить.

А что насчет hash(). К примеру если я буду использовать hash() и sha512, на всех ли системах это будет работать.

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

PS
Конечно же, это не главное. Главное то, нужен ли кому-то мой сайт. Если нужен очень, то поломают. Вопрос в том, как максимально затруднить процесс, чтобы не ломали все кому не лень.
Hapson Отправлено: 30 Июля, 2013 - 01:59:36 • Тема: Шифрование паролей, сессий, куков... • Форум: Вопросы новичков

Ответов: 20
Просмотров: 967
caballero пишет:
смысл шифровать пароль есть в БД чтобы потом сравнивать при авторизации

Я имею ввиду при регистрации нового пользователя, его пароль шифровать как-то так.
caballero пишет:
а зачем в это вообще лезть? как работает сессия не имеет значения - вы можете зранить там что угодно включая пароли

Многие пишут, что украв куку сессии можно как-то что-то нехорошее наделать. В общих чертах - сессии не совершенны. Это не мое мнение. Ну да ладно, пусть будет PHPSESSID, но парочка хешей там не помешает.
Hapson Отправлено: 30 Июля, 2013 - 01:08:41 • Тема: Шифрование паролей, сессий, куков... • Форум: Вопросы новичков

Ответов: 20
Просмотров: 967
Ниже я может где-то ляпну глупость - я не особо разобрался еще во всех этих методах шифрования.
Имеет ли смысл шифровать пароль к примеру так:
PHP:
скопировать код в буфер обмена
  1. $start = microtime(1);
  2.  
  3. $user_pass = "megapassword";
  4. $salt = hash("sha512", $_SERVER['REMOTE_ADDR']);//соль -> в БД
  5. $result = "";
  6. for($i = 0; $i < 10000; $i++){
  7.         $result = hash("sha512", $user_pass . $salt . $result);
  8. }
  9. $result = md5($salt . substr($result, 32, 32));//пароль -> в БД
  10.  
  11. $clock = microtime(1) - $start ."<br>";
  12. //0.28 - 0.3 sec


Дальше вопрос по кукам.
Что если и имя и значение куки тоже будут какими-то вот такими хешами? В куки уже хешировать какие-то поля из БД.

Теперь сессии. На основе чего генерируется id сессии? Можно же ведь вместо имени сессии записывать такой хеш? Ну и значение тоже хеш чего-то там... юзер агент, ip (любые значения, за которыми не нужно лазить в БД)

Ну и самое главное - везде ли поддерживается sha512?
(Добавление)
PS
Ну к примеру вот так (образно)
PHP:
скопировать код в буфер обмена
  1. session_name(hash("sha512", $_SERVER['REMOTE_ADDR']));
  2. session_id(hash("sha512", $_SERVER['HTTP_USER_AGENT']));

(Добавление)
PPS
ну и плюс в саму сессию будет записываться хеш каких-то данных, которые есть в сессии.

Страниц (24): В начало « ... 13 14 15 16 [17] 18 19 20 21 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB