|
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 107
|
|
Регистрация и авторизация28.04.2015, 18:07. Показов 1360. Ответов 17
Метки нет (Все метки)
Здравствуйте!
Последние 4 часа искал в интернете инструкции по созданию нормальной регистрации и авторизации. Исходя из того, что я начитался (а это: "в куках не хранить пароль и логин" и т.д.), пришел к выводу: хорошей готовой регистрации для себя я не нашел. Т.к. с PHP я все еще на "Вы", снова прошу помощи у жителей форума =) Суть задачи такова: зарегистрировать пользователя, отправив его данные в БД. Пользователь должен после регистрации ввести свои зарегистрированные данные и авторизоваться. На сайте будет уйма данных, которая выводится из строки пользователя. При авторизации, как я понимаю, сайт должен понимать, из какой строки в БД брать все эти данные, и с какой строкой работать все это время. По сути, это сессии, так? Очень хочу научиться делать это все, но время поджимает. Если кто может - подскажите, где найти готовое решение, либо ткните меня носом, где разобраться с этими сессиями (нужно же занести пользователя в сессию, задать ей время жизни, и сделать кнопку разрушения сессии (выход)?). P.S.: для регистрации и авторизации самый оптимальный вариант - делать хеш, забивать его в куки и БД? А потом сверять? Или?..
0
|
|
| 28.04.2015, 18:07 | |
|
Ответы с готовыми решениями:
17
Авторизация и Регистрация
Регистрация/авторизация |
|
68 / 68 / 23
Регистрация: 17.02.2015
Сообщений: 397
|
|
| 28.04.2015, 18:49 | |
|
В гугле миллион решений..
0
|
|
|
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
|
|
| 28.04.2015, 19:58 | |
|
Сессии – это дополнительная нагрузка. Фраза "в куках не хранить пароль и логин" вовсе не означает "куки использовать не нужно". Ну, логин еще можно хранить в куках, холя лучше числовой id. Даже пароль можно, но очень сильно "засоленный", хотя лучше какой-нибудь редко повторяющийся сложный ключ, чтобы его можно было при необходимости сбрасывать (повторно генерировать) на сервере без смены пароля. Лично я обычно храню id и ключ в одной строке, тем самым добиваясь полной уникальности ключа в отдельно взятый момент времени и упрощения в том плане, что работаю с одним значением в куках, а не с двумя, хотя ключ в общем получается сложнее и часто содержит избыточную информацию на стороне сервера (id), пусть даже и в каком-либо измененном (закодированном) виде.
0
|
|
|
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 107
|
||||
| 28.04.2015, 20:20 [ТС] | ||||
|
Числовой ID, логин и засоленный пароль - вообще отлично. Только как солить то? Я в этом толком не разбираюсь ЕЩЕ. По этому прошу помощи тут. В принципе, все тоже зависит от сайта? У меня там не будет хранится денег, секретных данных государства, или чего-то ценного. Однако от горе-взломщиков, у которых руки чешутся, хочется спастись. Так бы, в принципе, написал и регу и авторизацию. Но без какой-либо безопасности. Единственное - покрыл бы двойным md5 (это же и есть что-то типа "соли"?).
0
|
||||
|
68 / 68 / 23
Регистрация: 17.02.2015
Сообщений: 397
|
|
| 28.04.2015, 20:42 | |
|
php md5()
0
|
|
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
||
| 28.04.2015, 20:53 | ||
|
0
|
||
|
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
|
|||
| 28.04.2015, 20:53 | |||
|
0
|
|||
|
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 107
|
|||
| 28.04.2015, 21:31 [ТС] | |||
|
Я так понимаю, нужно будет хранить либо в сессии, либо в куках ID пользователя, и все mysql запросы прогонять через этот ID? Если не понятно выражаюсь: пользователь с ID 5 логинится на сайте. Пользователь заходит в пункт "статистика" и видит всю свою статистику, которая лежит в БД в строке с ID 5. И вся работа сайта должна исходить и работать именно с этой строкой в БД. Что то типа "SELECT * FROM users WHERE id='.$_SESSION['id'].'" - и выносятся все значения в массив. P.S.: блондинкой себя чувствую
0
|
|||
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
||
| 28.04.2015, 21:39 | ||
|
0
|
||
|
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
|
|||
| 28.04.2015, 23:35 | |||
|
1) когда куки в браузере отключены (такое даже рассматривать не хочу, т.к. в этой ситуации в сессиях используется достаточно разумный и один из немногих возможных подход с изменением адресации, но по нынешним временам не слишком актуальный); 2) когда нужно хранить большое число переменных в нескольких экземплярах на стороне сервера, дабы скрыть их состав и содержимое от клиента; информацию о пользователе можно спокойно хранить в соответствующей записи БД, а "временные" данные (помимо ключа) в тех же куках или даже некоторые данные уместно передавать в адресе (например, я часто передаю номер текущей страницы какого-то многостраничного перечня в адресе в GET-параметре даже при переходе на страницу, которая не особо нуждается в этом параметре, чтобы впоследствии по значению этого параметра вернуться к перечню именно на ту его страницу, которая указана в упомянутом GET-параметре).
0
|
|||
|
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 107
|
||
| 29.04.2015, 00:12 [ТС] | ||
|
0
|
||
|
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
|
|
| 29.04.2015, 00:44 | |
|
А почитать, чтобы не задавать таких простых вопросов, возможно?
Добавлено через 4 минуты Подсказка: php setcookie
0
|
|
| 29.04.2015, 06:44 | |||||
|
Правда, хранить всю информацию о пользователе стоит или нет, в сесссии -- решать вам, и зависит от приложения. Просто есть такой прикол, что например, вы, как администратор, решили удалить или заблокировать пользователя, в базе будет находиться status=blocked, а в сессии status=good_man. В результате вам при каждом таком изменении пользователя надо либо обновить его данные в сессии, либо все равно при каждом запросе делать выборку из базы на предмет того, заблокирован он или нет. Насчет того, что такое сессии в принципе, и зачем они нужны (также затронуты некоторые аспекты безопасности), если вам это интересно: Условие "Вошедший пользователь". Улучшить безопасность Отдельно на тему безопасности кук я объяснял этому же человеку в соседнем треде: Кража куки Не по теме: ну а если по-взрослому, то сессии и куки совершенно параллельные понятия. Cookies -- это механизм HTTP-протокола. А сессии -- это состояние "канала связи", и Cookies для них -- это как один из механизмов "транспорта" между клиентом и сервером в конкретном протоколе: HTTP. Вообщем-то идея и не самая плохая. Мы не говорим о проектировании систем класса А+, ТС как бы на это немного намекнул в самом начале. Да, в md5 нашли коллизии, да, его легко перебирать на gpu. Тем не менее, чтобы взломать пароль (а особенно, соленый, да еще и с неизвестной солью, как, например, описано тут), потребуется примерно 2123.4/2 операций (с учетом "дней рождений"), по известным мне последним оценкам (ссылки на саму работу приложены). Таким образом, MD5 небезопасен для подписи сообщений, для хеширования файлов. Но что касается восстановления сообщения по хешу, то, на практике, оно все еще достаточно трудоемкое. Не по теме: Раземеется, если не использовать пароли вроде 123456 Однако, простота его перебора позволяет арендовать сервера для взлома конкретного хеша, по относительно недорогой цене. Вот тут приводят цену в 2000 баксов. Поэтому, если есть возможность, почему бы не применить более "крутые" хеши. Начиная с sha{256,384,512} и sha3 (относительно недавно приняли), и заканчивая scrypt, если вы ну совсем параноик Ну и есть еще Whirlpool, и некоторые другие. Битность у них высокая, и атаки на них маловероятны, в обозримом будущем.Однако, я не уверен, что шифрование -- это хорошая идея. Пароль по своей природе таков, что его, в идеале, никто не должен знать, кроме пользователя, даже админ. Поэтому, на мой взгляд, необратимое преобразование нажеднее. Если говорить о шифровании, то вам еще придется куда-то сохранять и ключ... а какой смысл хранить ключ и шифр в одном месте? Если злоумышленник получит доступ к базе, то он получит доступ и к этим ключам. Или вы собираетесь его в файле хранить? Ну это все ок, когда уязвима только база, но неуязвима ФС, и когда правильно выставлены разрешения для пользователя СУБД... Однако, опять же можно организовать подобный перебор, поскольку злоумышленник знает начальное сообщение и закодированное. С учетом той же простоты blowfish, вы не сильно-то ему жизнь усложнили. Не по теме: еще одно лирическое отступление. да, я в курсе, что длина ключа больше. До 448 бит. Но! Как мы его будем генерировать? Или админ сам будет его вводить вручную? В первом случае, как бы вам опять же не попасться в ловушку mt_rand. Во втором же случае, алфавит будет ограничен печатаемыми символами (для простоты, положим, 64=26 символа в алфавите), ну и админ -- тоже человек, может не знать или забыть о каких-то тонкостях, и вместо 56-ти символов ввести, скажем, 22. Тогда количество всех возможных ключей (с учетом алфавита в 64 символа) будет 2622=2132. Учитывая парадокс дней рождений, получим примерно 266. А это уже всего-то на пару порядков выше, чем 2123.4/2=261.7. То есть такой ключ практически идентичен md5 (заплатить в два раза больше и подождать не день, а 4 -- и получим свой ключ, зато от всех! паролей на сервере) Ну а если вас все эти сложности не пугают, и вам всенепременнейше необходимо обратное преобразование, то почему бы тогда не взглянуть на более современные AES, Twofish или Threefish? (по крайней мере первые два в mcrypt точно есть, AES также можно нагуглить и в чисто пхп-шной имплементации) Не по теме: в качестве альтернативы предлагаю Salsa20/ChaCha20. Но его нужно применять аккуратно, как и любой поточный шифр
0
|
|||||
|
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
|
|
| 29.04.2015, 15:06 | |
|
0
|
|
| 29.04.2015, 15:37 | |
|
miketomlin, вы предусмотрели вариант, что ваш алгоритм сокрытия id раскроется (security from obscurity -- это плохо, вы же понимаете
), и некая Труди сделает user_id равным f(1), ну или, в общем случае, f($admin_user_id), где f -- функция вашего преобразования в "неявный вид". не будет ли она авторизована под этим user_id?
0
|
|
|
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
|
|||
| 29.04.2015, 16:05 | |||
|
0
|
|||
| 29.04.2015, 16:55 | ||||
|
мне что-то подсказывает, что вы либо реализовали вручную свой механизм сессий, либо ваша система является небезопасной, либо я вас не до конца понял. напишите мне в скайп (в профиле у меня указан), если вам интересно.
0
|
||||
|
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
|
|
| 29.04.2015, 21:52 | |
|
Да, естественно, после поиска по id проверяю корректность ключа авторизации. Сессиями тоже пользуюсь, но, видимо, не так часто, как другие. Действительно есть что-то общее с сессиями, но в качестве основного хранилища обычно выступает БД, а не файлы. Доп. нагрузка на БД не тревожит, ведь основной смысл как раз-таки в том, чтобы переложить нагрузку с файлов на БД. Естественно, ключ у каждого пользователя свой (есть вероятность появления дублирующихся ключей, но она крайне мала, к тому же при необходимости можно объединить id с ключом, чтобы сделать его уникальным).
0
|
|
| 29.04.2015, 21:52 | |
|
Помогаю со студенческими работами здесь
18
регистрация и авторизация Регистрация и авторизация на сайте Регистрация и авторизация пользователей session_start(); [PHP регистрация и авторизация] регистрация и авторизация на php mysql Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|