Хочу сделать авторизацию или аутентификацию, похуй по кукам. Правильно ли будет реализовать ее следующим образом:0. Авторизированным считается, когда в сессии имеется логин.1. При авторизации (если юзер поставил галку "запомнить меня"), помимо сессии, записываем в куки рандомный хэш и логин юзера, а также записываем этот хэш в БД к этому логину.2. Всегда проверяем ниличие кук с логином и сессией3. Если они есть. То проверяем равен ли хэш из кук хэшу из БД4. Если равен - создаем сессию = авторизировалиКакие подводные? Что я упускаю?
бамп
>>152379279 (OP)Я не особый эксперт в пхп, авторизацию никогда не делал, но по описанному тобою варианту ведь если украсть куки, то можно выдавать себя за пользователя. Нужно тогда к ip привязать этот хэш, например. А лучше погугли как все это нормально делать и защититься от хакеров.
>>152379952дык куки на то и куки, что они всегда не безопасны. Везде же пишут что-то типа "запомнить меня (не безопасно)" или у контакта наоборот от противного "чужой компьютер" т.е. наоборот не запоминать в куках.Я гуглил, но давно и по памяти вроде оно так делается. Интересно че анон скажет.А по поводу привязки к IP - я в администрировании этом всем не шарю, но у всех он динамичный - это раз, а два - если ты зашел дома - авторизовался, а потом пошел куда-то, то там уже не сработает - хуйня
>>152379279 (OP)>2. Всегда проверяем ниличие кук с логином и хэшемфикс
Гугли $_SESSION и session_start, да и сами session_* функции. Вообще забей на печенье. В php всё сделали за тебя.
>>152380753зачем мне это гуглить?
>>152380831Потому что изобретаешь велосипед, очевидно
>>152379279 (OP)Как раз разбираю эту тему сейчас.Вроде бы годный план.
Алсо, не слушай этого пидора, делай по-своему, если хочешь лучше разобраться.
>>152379279 (OP)>0. Авторизированным считается, когда в сессии имеется логин.Куки можно подделать, вписав любой логин.>1. При авторизации (если юзер поставил галку "запомнить меня"), помимо сессии, записываем в куки рандомный хэш и логин юзера, а также записываем этот хэш в БД к этому логину.Лучше тогда просто хэш, без имени пользователя, а в базе проверять есть ли хэш и тогда смотреть у какого юзера. Но генерация хэша должна зависеть не только от имени юзера, но и от чего-то еще. Может даже и вовсе не от имени.-----Можно еще вписать в БД user_agent пользователя, если вдруг куки подделают, то ты проверишь и поймешь, что устройство - иное.Можно много всякой хуйни вписать, некие "отпечатки", например - разрешение экрана (но это с js)
>>152380997Как мне гугление про сессии, поможет сделать авторизацию по кукам без велосипедов?
>>152379279 (OP)а разве в пхп нет стандартной аутентификации?
>>152381141>Куки можно подделать, вписав любой логина сессию подделать нельзя. Причем тут куки?>Лучше тогда просто хэш, без имени пользователязадумался
>>152379279 (OP)пользуйся, ептреализовал куки и сессии, переделать только на куки сам сможешь https://github.com/grigoryMovchan/auth/tree/auth_mvc
>>152381146Используй фреймворк и не еби мозги.Фреймворки, как правило, имеют базовые вещи, вроде авторизации, в коробке. И это безопасно, потому как там учтено все - и фильтрация есть и база данных сгенерированная под это и т.п.
>>152379279 (OP)http-only атрибут на куки упустил. Ставь его и ссы на всех, кто про небезопасные куки пиздит в треде.
>>152381290>а сессию подделать нельзя. Причем тут куки?Тогда зачем тебе писать логин в куки?мы на разных языках говорим?
>>152381364А вот и фреймворкомакака пожаловала, которой все готовенькое подай.
>>152381453фатальный недостаток, понимаю.
>>152379279 (OP)Content-Security-Policy забыл включить.
>>152381360на этой фото у него непропорционально большая голова, а тело - малое.
>>152381494Алсо https://habrahabr.ru/company/yandex/blog/206508/
>>152381360тут собственно сами классы https://github.com/grigoryMovchan/auth/tree/auth_mvc/app/models
>>152381501а ты фашист, чтобы какие-то стандарты устанавливать на пропорции?
>>152381501И волос многовато для лысого
>>152381441потому-что:>Авторизированным считается, когда в сессии имеется логин.Сессия живет не долго, а мне надо, чтобы пользователь зашел на следующий день и был авторизован. Для этого в куках хранится идентификатор, при помощи которого, каждый раз, создается новая сессия
>>152381583Там еще и в мышцах руки какая-то хуйня изгибается, вангую синтолу вкачал.
>>152381453>А вот и фреймворкомакака пожаловала, которой все готовенькое подай.А теперь погугли, что такое legacy и иди на хуй.Ты берешь и строишь дом, используя правильные технологии\куски кода (кирпичики), если не хватает чего-то, то пишешь сам.Я уверен, что брать код от гугла или хороший код с гитхаба ГОРАЗДО лучше, чем писать свой. Безопаснее и быстрее.И это правильный подход, а не макакинг.Ты делаешь сизифов труд, который никому не нужен. Даже тебе.
>>152381628может ему хочется понять как работают куки. не rfc же читать, это для дураков и не по-русски.
>>152381564нет, просто ракурс неудачный.Я же сказал тебе НА ЭТОЙ ФОТО, а не в целом.
>>152381628А вот и логика фремворкомакаки. А потом такой проект начинает под твоим говнофреймворком падать, клиенты бегут к конкурентам, а макака съебывает в другую фирму пилить дальше свое говно и рассказывать про чудо код с гитхаба.
>>152381701может начинает падать, а может и нет. а судя по уровню оппоста, там дело даже до падания не дойдет.
>>152381675>может ему хочется понять как работают кукитогда он читал бы документацию.А тут он спрашивает, что писать, что нет.Конечно, он может делать это для обучения, но гораздо лучше посмотреть хороший код, прочитать его и понять, а не тред создавать и часами сидеть, ковыряя велосипед.
>>152381628Не согласен. Я неплохо разобрался со многими вещами, пока писал авторизацию-велосипед. А вот перед этим делал проджект на ларавел https://github.com/grigoryMovchan/zuihitsu Да, авторизация из коробки, свой уровень абстракции для любого пука, да, в итоге, все работало, но для меня это было магией, а код кромешный пиздец.>>152381360-кун
>>152381701>А потом такой проект начинает под твоим говнофреймворком падатьне начинает.Ведь там есть кэширование.Там есть отладчик, и ты можешь смотреть, какие места долгие и фиксить это.Использовать фреймворки правильно.Если тебе нужна авторизация - тебе нужен фреймворк.
>>152381741>судя по уровню оппостаа что в уровне ОП поста не так?
>>152381811> да, в итоге, все работало, но для меня это было магией, а код кромешный пиздец.Ну смотри. Если ты используешь API - то тебя не волнует чужой код. Если ты работаешь в команде - та же история. Тебе дают некие "концы", за которые ты цепляешься и пишешь дальше. То же самое фреймворк.Писать вообще всё с нуля - плохо, я считаю.
>>152381850Кек, ты явно так и не разобрался, как профайлинг в своем коде делать. Использовать фреймворки - неправильно, фреймворк это костыль, который тянет за собой гору зависимостей, жрет память и топит скорость. Правильно знать, как и что реализуется. Решения все достаточно типовые, когда знаешь что и как делать. Один раз разобрался, сделал грамотно - без проблем юзаешь в каждом проекте и ссышь на макак с фреймворками.
>>152379279 (OP)Если утечёт бд -> утечёт все хеши, которые в твоём случае = кукам, что приведёт полной компрометации всех пользователей. Разбери стандарт оауф2 и посмотри как это реализовано там.
> сделал грамотно - без проблем юзаешь в каждом проекте и> ссышь на макак с фреймворками. вот сейчас хорошо было.
>>152382041нет. Если тебе нужна авторизация, то нужен и личный кабинет и прочая хуйня типа редактирования хуй пойми чего.И в этом случае ты напишешь свой костыль, вместо испоьзования готовых безопасных фреймворков.
>>152382161Кек, да ты явно и роутер свой с диспатчером написать не сможешь. Согласен, тебе - юзать фреймворки только.
>>152382225но зачем?
>>152382254Сайт нагруженный делал хоть когда? Фреймворки твои летят по пизде только так. Заебешься их потом из всего кода вырезать.
>>152382295ой, давай только нагрузкой сейчас меряться не будем, пожалуйста.
>>152382334Ясно, ни разу фреймворк по кускам выдирать не приходилось. Ну под твои задачи писать свои классы и не нужно видно.
>>152382387если бы "мои задачи" решались "своими классами" было бы неплохо.
>>152382387>ни разу фреймворк по кускам выдирать не приходилоскому ты тут пишешь это?Если куски не используются, то они не грузят систему.А если ты их выдираешь - значит не используются.
Кстати, а поясните никогда не юзающему фреймворков, нахуя они нужны?Набросал базовый каркасик, прикрутил CRM, что еще нужно? Что там за волшебные свистоперделки в этих ваших фреймворках?
А мне поясните про эти ваши ангуляры, уии, реакты итд, нахуя они? Всегда юзал просто жс и жквери.
>>152382539сделай интерфейс хотя бы гмейла на jquery, потом расскажешь.
>>152382554А что в этом нереального? Писанины дохуя будет, правда.
>>152382600вопрос в том, в начиная с какого размера твоя писанина становится неуправляемой. js был языком не для больших проектов, но веб вырос и вариантов не было. поэтому нужны модули, нужна сборка, нужка архитектура клиента - компоненты, управление состоянием, управление событиями. чем это удобнее и надежнее, тем бОльший проект ты можешь собрать в кучу, заставить работать и поддерживать когда поменяются требования.
>>152382490>Кстати, а поясните никогда не юзающему фреймворков, нахуя они нужны?У тебя из коробки куча готового:безопасностьфильтрациябыстродействиеархитектураотладчикмодульностькэшированиеи т.п.
прикольно, что ни одна макака не знает, как же эта аутентификация работает. ну разве может такая написать хоть что-то если она абсолютно не понимает никаких принципов работы того, что желает?
>>152382600не дохуя. Грузишь аяксом то да се, без задней мысли и все
>>152382708*что делает?
>>152382685Проблемы макак опять пошли, не могущих нормально свой код структурировать. Все отлично пишется что на чистом js, что на jquery, с минимальным подключением библиотек, где надо.
>>152382704и ты не знаешь что там внутри и как оно работает, и вынужден читать тонну документации чтобы понять, что же правильно этому черному ящику посылать на вход, чтобы получить на выходе то что ты хочешь
>>152382704Это все какие-то абстракции, например "безопасность" - вообще неочем.архитектура удобнее когда своя, а кэширование, ЧПУ и т.д. - вещи не сложные, которые можно за час всунуть в свой каркасик пидорасик. Зато ты знаешь че где и как, а когда берешься за фреймворк - то пердак на орбиту улетает от того, что хз что где и как
>>152382752гораздо лучше свой велосипед: авторы ничего не помнят, документации нет вообще, используется во всем интернете ровно в одном месте - гарантированно нет никаких багов и на so ответ на любой вопрос.
>>152382745конечно, задач ведь больше никаких нет, кроме как код структурировать.
>>152382752Там еще и безопасности часто нет. Не раз случаи бывали, как подключенный фреймворк через гору заюзанных зависимостей постил в твиттер сообщения, когда его подключали. Авторы фреймворка и не в курсе были, лол. А уж если баг трекер любого фреймворка открыть, там вечно гора претензий и тикетов, не решенных с 3-5х летней давности, причем авторы пишут мол так и надо, решать не будем.
>>152382860хорошо когда ты знаешь как надо, и все тикеты у тебя решены. а главное без дела не останешься, когда еще раз с нуля все перепишешь.
ОП, можешь в БД писать еще частично (без версии) User-Agent, какая-никакая доп. защита, если спиздят куки
поясните как так выходит что в md5 длинный текст становится коротким?
>>152383853как так выходит, что последняя цифра длинного числа короткая?
>>152379279 (OP)Сейчас бы хранить логин в куках.
>>152379279 (OP)Если сайт не на коленке делаешь, и защита действительно нужна делай по телефону.
>>152379279 (OP)> авторизацию или аутентификацию, похуйНапример - я Васян и могу оттопырыть твою мамку. Аутентификация - это когда ты можешь точно определить, что я Васян. Авторизация - когда у меня есть право оттопырить твою мамку.0. Записывай любой идентификатор пользователя, храни его только на сервере. Идентификатор сессии можешь хранить в куке.1. Если он поставил галку, то создай запись на сервере с рандомным идентификатором (GUID подойдет) и в этой записи укажи, что это за пользователь. Никакой хеш не нужен.2. Только если нет сессии. Делаешь это в тот момент, когда тебе надо определить - послать клиента в окно пользователя или в окно аутентификации.3. См. 1. Если уникальный идентификатор имеет соответствующую запись на сервере - читаешь её. Если куки содержит идентификатор несуществующей записи - стираешь куки и перенаправляешь пользователя на страницу авторизации.
>>152384426> страницу авторизацииАутентификации. Похуй.
>>152379279 (OP)пили OAuth
>>152379279 (OP)Не забудь пароль в БД записать, чтобы в письмах можно было слать пользователю.Щас бы блять в 2017 году авторизацию велосипедить.
>>152382783>Зато ты знаешь че где и какРовно 3 месяца. Потом уже нихуя не знаешь и всё время лазишь в код смотреть. Нахуй это говно нужно.