|
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 107
|
|
Регистрация и авторизация28.04.2015, 18:07. Показов 1317. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|