Сохранен 76
https://2ch.su/b/res/152379279.html
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Аноним 05/05/17 Птн 01:11:41 #1 №152379279 
php-elephant-logo-bd4f9d83be8c8563248fe4793f90bae7.png
Хочу сделать авторизацию или аутентификацию, похуй по кукам. Правильно ли будет реализовать ее следующим образом:

0. Авторизированным считается, когда в сессии имеется логин.

1. При авторизации (если юзер поставил галку "запомнить меня"), помимо сессии, записываем в куки рандомный хэш и логин юзера, а также записываем этот хэш в БД к этому логину.

2. Всегда проверяем ниличие кук с логином и сессией

3. Если они есть. То проверяем равен ли хэш из кук хэшу из БД

4. Если равен - создаем сессию = авторизировали

Какие подводные? Что я упускаю?
Аноним 05/05/17 Птн 01:20:42 #2 №152379737 
бамп
Аноним 05/05/17 Птн 01:25:04 #3 №152379952 
>>152379279 (OP)
Я не особый эксперт в пхп, авторизацию никогда не делал, но по описанному тобою варианту ведь если украсть куки, то можно выдавать себя за пользователя. Нужно тогда к ip привязать этот хэш, например. А лучше погугли как все это нормально делать и защититься от хакеров.
Аноним 05/05/17 Птн 01:28:40 #4 №152380130 
>>152379952
дык куки на то и куки, что они всегда не безопасны. Везде же пишут что-то типа "запомнить меня (не безопасно)" или у контакта наоборот от противного "чужой компьютер" т.е. наоборот не запоминать в куках.

Я гуглил, но давно и по памяти вроде оно так делается. Интересно че анон скажет.

А по поводу привязки к IP - я в администрировании этом всем не шарю, но у всех он динамичный - это раз, а два - если ты зашел дома - авторизовался, а потом пошел куда-то, то там уже не сработает - хуйня
Аноним 05/05/17 Птн 01:31:31 #5 №152380276 
>>152379279 (OP)
>2. Всегда проверяем ниличие кук с логином и хэшем
фикс
Аноним 05/05/17 Птн 01:38:19 #6 №152380572 
бамп
Аноним 05/05/17 Птн 01:42:11 #7 №152380753 
Гугли $_SESSION и session_start, да и сами session_* функции. Вообще забей на печенье. В php всё сделали за тебя.
Аноним 05/05/17 Птн 01:44:13 #8 №152380831 
>>152380753
зачем мне это гуглить?
Аноним 05/05/17 Птн 01:48:07 #9 №152380997 
>>152380831
Потому что изобретаешь велосипед, очевидно
Аноним 05/05/17 Птн 01:48:40 #10 №152381013 
>>152379279 (OP)
Как раз разбираю эту тему сейчас.
Вроде бы годный план.
Аноним 05/05/17 Птн 01:49:39 #11 №152381055 
Алсо, не слушай этого пидора, делай по-своему, если хочешь лучше разобраться.
Аноним 05/05/17 Птн 01:51:46 #12 №152381141 
>>152379279 (OP)

>0. Авторизированным считается, когда в сессии имеется логин.

Куки можно подделать, вписав любой логин.

>1. При авторизации (если юзер поставил галку "запомнить меня"), помимо сессии, записываем в куки рандомный хэш и логин юзера, а также записываем этот хэш в БД к этому логину.

Лучше тогда просто хэш, без имени пользователя, а в базе проверять есть ли хэш и тогда смотреть у какого юзера. Но генерация хэша должна зависеть не только от имени юзера, но и от чего-то еще. Может даже и вовсе не от имени.

-----

Можно еще вписать в БД user_agent пользователя, если вдруг куки подделают, то ты проверишь и поймешь, что устройство - иное.

Можно много всякой хуйни вписать, некие "отпечатки", например - разрешение экрана (но это с js)
Аноним 05/05/17 Птн 01:51:50 #13 №152381146 
>>152380997
Как мне гугление про сессии, поможет сделать авторизацию по кукам без велосипедов?
Аноним 05/05/17 Птн 01:53:21 #14 №152381215 
>>152379279 (OP)
а разве в пхп нет стандартной аутентификации?
Аноним 05/05/17 Птн 01:54:59 #15 №152381290 
>>152381141
>Куки можно подделать, вписав любой логин
а сессию подделать нельзя. Причем тут куки?

>Лучше тогда просто хэш, без имени пользователя
задумался
Аноним 05/05/17 Птн 01:56:42 #16 №152381360 
2017-04-2321-11-11.png
>>152379279 (OP)
пользуйся, епт
реализовал куки и сессии, переделать только на куки сам сможешь https://github.com/grigoryMovchan/auth/tree/auth_mvc
Аноним 05/05/17 Птн 01:56:46 #17 №152381364 
>>152381146
Используй фреймворк и не еби мозги.
Фреймворки, как правило, имеют базовые вещи, вроде авторизации, в коробке. И это безопасно, потому как там учтено все - и фильтрация есть и база данных сгенерированная под это и т.п.
Аноним 05/05/17 Птн 01:57:48 #18 №152381406 
>>152379279 (OP)
http-only атрибут на куки упустил. Ставь его и ссы на всех, кто про небезопасные куки пиздит в треде.
Аноним 05/05/17 Птн 01:58:41 #19 №152381441 
>>152381290
>а сессию подделать нельзя. Причем тут куки?

Тогда зачем тебе писать логин в куки?
мы на разных языках говорим?
Аноним 05/05/17 Птн 01:58:56 #20 №152381453 
>>152381364
А вот и фреймворкомакака пожаловала, которой все готовенькое подай.
Аноним 05/05/17 Птн 01:59:29 #21 №152381476 
>>152381453
фатальный недостаток, понимаю.
Аноним 05/05/17 Птн 01:59:54 #22 №152381494 
>>152379279 (OP)
Content-Security-Policy забыл включить.
Аноним 05/05/17 Птн 02:00:02 #23 №152381501 
>>152381360
на этой фото у него непропорционально большая голова, а тело - малое.
Аноним 05/05/17 Птн 02:00:51 #24 №152381535 
>>152381494
Алсо https://habrahabr.ru/company/yandex/blog/206508/
Аноним 05/05/17 Птн 02:00:54 #25 №152381540 
vlcsnap-error1301.jpg
>>152381360
тут собственно сами классы

https://github.com/grigoryMovchan/auth/tree/auth_mvc/app/models
Аноним 05/05/17 Птн 02:01:28 #26 №152381564 
>>152381501
а ты фашист, чтобы какие-то стандарты устанавливать на пропорции?
Аноним 05/05/17 Птн 02:01:55 #27 №152381583 
>>152381501
И волос многовато для лысого
Аноним 05/05/17 Птн 02:02:38 #28 №152381624 
>>152381441
потому-что:
>Авторизированным считается, когда в сессии имеется логин.

Сессия живет не долго, а мне надо, чтобы пользователь зашел на следующий день и был авторизован. Для этого в куках хранится идентификатор, при помощи которого, каждый раз, создается новая сессия
Аноним 05/05/17 Птн 02:02:41 #29 №152381626 
>>152381583
Там еще и в мышцах руки какая-то хуйня изгибается, вангую синтолу вкачал.
Аноним 05/05/17 Птн 02:02:46 #30 №152381628 
>>152381453
>А вот и фреймворкомакака пожаловала, которой все готовенькое подай.

А теперь погугли, что такое legacy и иди на хуй.

Ты берешь и строишь дом, используя правильные технологии\куски кода (кирпичики), если не хватает чего-то, то пишешь сам.

Я уверен, что брать код от гугла или хороший код с гитхаба ГОРАЗДО лучше, чем писать свой. Безопаснее и быстрее.

И это правильный подход, а не макакинг.

Ты делаешь сизифов труд, который никому не нужен. Даже тебе.
Аноним 05/05/17 Птн 02:03:51 #31 №152381675 
>>152381628
может ему хочется понять как работают куки. не rfc же читать, это для дураков и не по-русски.
Аноним 05/05/17 Птн 02:03:54 #32 №152381678 
>>152381564
нет, просто ракурс неудачный.
Я же сказал тебе НА ЭТОЙ ФОТО, а не в целом.

Аноним 05/05/17 Птн 02:04:33 #33 №152381701 
>>152381628
А вот и логика фремворкомакаки. А потом такой проект начинает под твоим говнофреймворком падать, клиенты бегут к конкурентам, а макака съебывает в другую фирму пилить дальше свое говно и рассказывать про чудо код с гитхаба.
Аноним 05/05/17 Птн 02:05:25 #34 №152381741 
>>152381701
может начинает падать, а может и нет. а судя по уровню оппоста, там дело даже до падания не дойдет.
Аноним 05/05/17 Птн 02:05:53 #35 №152381759 
>>152381675
>может ему хочется понять как работают куки
тогда он читал бы документацию.
А тут он спрашивает, что писать, что нет.
Конечно, он может делать это для обучения, но гораздо лучше посмотреть хороший код, прочитать его и понять, а не тред создавать и часами сидеть, ковыряя велосипед.
Аноним 05/05/17 Птн 02:07:10 #36 №152381811 
>>152381628
Не согласен. Я неплохо разобрался со многими вещами, пока писал авторизацию-велосипед.

А вот перед этим делал проджект на ларавел https://github.com/grigoryMovchan/zuihitsu Да, авторизация из коробки, свой уровень абстракции для любого пука, да, в итоге, все работало, но для меня это было магией, а код кромешный пиздец.

>>152381360-кун
Аноним 05/05/17 Птн 02:08:11 #37 №152381850 
>>152381701
>А потом такой проект начинает под твоим говнофреймворком падать

не начинает.
Ведь там есть кэширование.
Там есть отладчик, и ты можешь смотреть, какие места долгие и фиксить это.

Использовать фреймворки правильно.
Если тебе нужна авторизация - тебе нужен фреймворк.
Аноним 05/05/17 Птн 02:08:47 #38 №152381864 
>>152381741
>судя по уровню оппоста
а что в уровне ОП поста не так?
Аноним 05/05/17 Птн 02:13:06 #39 №152381987 
>>152381811
> да, в итоге, все работало, но для меня это было магией, а код кромешный пиздец.

Ну смотри. Если ты используешь API - то тебя не волнует чужой код. Если ты работаешь в команде - та же история. Тебе дают некие "концы", за которые ты цепляешься и пишешь дальше. То же самое фреймворк.

Писать вообще всё с нуля - плохо, я считаю.
Аноним 05/05/17 Птн 02:14:29 #40 №152382041 
>>152381850
Кек, ты явно так и не разобрался, как профайлинг в своем коде делать.
Использовать фреймворки - неправильно, фреймворк это костыль, который тянет за собой гору зависимостей, жрет память и топит скорость. Правильно знать, как и что реализуется. Решения все достаточно типовые, когда знаешь что и как делать. Один раз разобрался, сделал грамотно - без проблем юзаешь в каждом проекте и ссышь на макак с фреймворками.
Аноним 05/05/17 Птн 02:15:32 #41 №152382073 
>>152379279 (OP)
Если утечёт бд -> утечёт все хеши, которые в твоём случае = кукам, что приведёт полной компрометации всех пользователей. Разбери стандарт оауф2 и посмотри как это реализовано там.
Аноним 05/05/17 Птн 02:15:34 #42 №152382079 
> сделал грамотно - без проблем юзаешь в каждом проекте и
> ссышь на макак с фреймворками.
вот сейчас хорошо было.
Аноним 05/05/17 Птн 02:17:58 #43 №152382161 
>>152382041
нет. Если тебе нужна авторизация, то нужен и личный кабинет и прочая хуйня типа редактирования хуй пойми чего.
И в этом случае ты напишешь свой костыль, вместо испоьзования готовых безопасных фреймворков.
Аноним 05/05/17 Птн 02:20:12 #44 №152382225 
>>152382161
Кек, да ты явно и роутер свой с диспатчером написать не сможешь. Согласен, тебе - юзать фреймворки только.
Аноним 05/05/17 Птн 02:21:16 #45 №152382254 
>>152382225
но зачем?
Аноним 05/05/17 Птн 02:22:29 #46 №152382295 
>>152382254
Сайт нагруженный делал хоть когда? Фреймворки твои летят по пизде только так. Заебешься их потом из всего кода вырезать.
Аноним 05/05/17 Птн 02:23:38 #47 №152382334 
>>152382295
ой, давай только нагрузкой сейчас меряться не будем, пожалуйста.
Аноним 05/05/17 Птн 02:25:44 #48 №152382387 
>>152382334
Ясно, ни разу фреймворк по кускам выдирать не приходилось. Ну под твои задачи писать свои классы и не нужно видно.
Аноним 05/05/17 Птн 02:28:24 #49 №152382461 
>>152382387
если бы "мои задачи" решались "своими классами" было бы неплохо.
Аноним 05/05/17 Птн 02:29:24 #50 №152382489 
>>152382387
>ни разу фреймворк по кускам выдирать не приходилос
кому ты тут пишешь это?
Если куски не используются, то они не грузят систему.
А если ты их выдираешь - значит не используются.
Аноним 05/05/17 Птн 02:29:25 #51 №152382490 
Кстати, а поясните никогда не юзающему фреймворков, нахуя они нужны?

Набросал базовый каркасик, прикрутил CRM, что еще нужно? Что там за волшебные свистоперделки в этих ваших фреймворках?
Аноним 05/05/17 Птн 02:31:04 #52 №152382539 
А мне поясните про эти ваши ангуляры, уии, реакты итд, нахуя они? Всегда юзал просто жс и жквери.
Аноним 05/05/17 Птн 02:31:40 #53 №152382554 
>>152382539
сделай интерфейс хотя бы гмейла на jquery, потом расскажешь.
Аноним 05/05/17 Птн 02:33:30 #54 №152382600 
>>152382554
А что в этом нереального? Писанины дохуя будет, правда.
Аноним 05/05/17 Птн 02:36:39 #55 №152382685 
>>152382600
вопрос в том, в начиная с какого размера твоя писанина становится неуправляемой. js был языком не для больших проектов, но веб вырос и вариантов не было. поэтому нужны модули, нужна сборка, нужка архитектура клиента - компоненты, управление состоянием, управление событиями. чем это удобнее и надежнее, тем бОльший проект ты можешь собрать в кучу, заставить работать и поддерживать когда поменяются требования.
Аноним 05/05/17 Птн 02:37:36 #56 №152382704 
>>152382490
>Кстати, а поясните никогда не юзающему фреймворков, нахуя они нужны?

У тебя из коробки куча готового:
безопасность
фильтрация
быстродействие
архитектура
отладчик
модульность
кэширование

и т.п.
Аноним 05/05/17 Птн 02:37:52 #57 №152382708 
прикольно, что ни одна макака не знает, как же эта аутентификация работает. ну разве может такая написать хоть что-то если она абсолютно не понимает никаких принципов работы того, что желает?
Аноним 05/05/17 Птн 02:37:52 #58 №152382709 
FeDkffM2BnI.jpg
>>152382600
не дохуя. Грузишь аяксом то да се, без задней мысли и все
Аноним 05/05/17 Птн 02:38:23 #59 №152382718 
>>152382708
*что делает?
Аноним 05/05/17 Птн 02:39:45 #60 №152382745 
>>152382685
Проблемы макак опять пошли, не могущих нормально свой код структурировать. Все отлично пишется что на чистом js, что на jquery, с минимальным подключением библиотек, где надо.
Аноним 05/05/17 Птн 02:40:03 #61 №152382752 
>>152382704
и ты не знаешь что там внутри и как оно работает, и вынужден читать тонну документации чтобы понять, что же правильно этому черному ящику посылать на вход, чтобы получить на выходе то что ты хочешь
Аноним 05/05/17 Птн 02:41:16 #62 №152382783 
>>152382704
Это все какие-то абстракции, например "безопасность" - вообще неочем.

архитектура удобнее когда своя, а кэширование, ЧПУ и т.д. - вещи не сложные, которые можно за час всунуть в свой каркасик пидорасик. Зато ты знаешь че где и как, а когда берешься за фреймворк - то пердак на орбиту улетает от того, что хз что где и как
Аноним 05/05/17 Птн 02:41:39 #63 №152382792 
>>152382752
гораздо лучше свой велосипед: авторы ничего не помнят, документации нет вообще, используется во всем интернете ровно в одном месте - гарантированно нет никаких багов и на so ответ на любой вопрос.
Аноним 05/05/17 Птн 02:42:57 #64 №152382820 
>>152382745
конечно, задач ведь больше никаких нет, кроме как код структурировать.
Аноним 05/05/17 Птн 02:44:42 #65 №152382860 
>>152382752
Там еще и безопасности часто нет. Не раз случаи бывали, как подключенный фреймворк через гору заюзанных зависимостей постил в твиттер сообщения, когда его подключали. Авторы фреймворка и не в курсе были, лол. А уж если баг трекер любого фреймворка открыть, там вечно гора претензий и тикетов, не решенных с 3-5х летней давности, причем авторы пишут мол так и надо, решать не будем.
Аноним 05/05/17 Птн 02:46:21 #66 №152382887 
>>152382860
хорошо когда ты знаешь как надо, и все тикеты у тебя решены. а главное без дела не останешься, когда еще раз с нуля все перепишешь.
Аноним 05/05/17 Птн 02:56:56 #67 №152383118 
ОП, можешь в БД писать еще частично (без версии) User-Agent, какая-никакая доп. защита, если спиздят куки
Аноним 05/05/17 Птн 03:31:09 #68 №152383853 
поясните как так выходит что в md5 длинный текст становится коротким?
Аноним 05/05/17 Птн 03:48:37 #69 №152384187 
>>152383853
как так выходит, что последняя цифра длинного числа короткая?
Аноним 05/05/17 Птн 03:51:00 #70 №152384235 
>>152379279 (OP)
Сейчас бы хранить логин в куках.
Аноним 05/05/17 Птн 03:53:37 #71 №152384290 
>>152379279 (OP)
Если сайт не на коленке делаешь, и защита действительно нужна делай по телефону.
Аноним 05/05/17 Птн 04:00:36 #72 №152384426 
.jpg
>>152379279 (OP)
> авторизацию или аутентификацию, похуй

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

0. Записывай любой идентификатор пользователя, храни его только на сервере. Идентификатор сессии можешь хранить в куке.

1. Если он поставил галку, то создай запись на сервере с рандомным идентификатором (GUID подойдет) и в этой записи укажи, что это за пользователь. Никакой хеш не нужен.

2. Только если нет сессии. Делаешь это в тот момент, когда тебе надо определить - послать клиента в окно пользователя или в окно аутентификации.

3. См. 1. Если уникальный идентификатор имеет соответствующую запись на сервере - читаешь её. Если куки содержит идентификатор несуществующей записи - стираешь куки и перенаправляешь пользователя на страницу авторизации.



Аноним 05/05/17 Птн 04:02:39 #73 №152384470 
>>152384426
> страницу авторизации

Аутентификации. Похуй.
Аноним 05/05/17 Птн 05:42:22 #74 №152385834 
>>152379279 (OP)

пили OAuth
Аноним 05/05/17 Птн 09:07:20 #75 №152389957 
>>152379279 (OP)
Не забудь пароль в БД записать, чтобы в письмах можно было слать пользователю.
Щас бы блять в 2017 году авторизацию велосипедить.
Аноним 05/05/17 Птн 09:13:17 #76 №152390191 
>>152382783
>Зато ты знаешь че где и как
Ровно 3 месяца. Потом уже нихуя не знаешь и всё время лазишь в код смотреть. Нахуй это говно нужно.
comments powered by Disqus