Posted 10 марта, 20159 yr comment_82741 Всем доброго времени суток. Что Вы дальше прочтете, возможно заставит чувствовать злость и негодование ко мне, потому что сам чувствую что вопрос очень глупый, но все же решить его не могу, прошу Вас перебороть это чувство и помочь. Не буду описывать всю история, того как я пришел к проблеме. В общем у меня есть код: if($_COOKIE["BITRIX_SM_LOGIN"] != '' and $_COOKIE["pass_hash"] == "") { $dbh = mysql_connect("localhost", "***", "***") or die("Не могу соединиться с MySQL."); mysql_select_db("***") or die("Не могу подключиться к базе."); $res = mysql_query("SEL ECT `member_id`, `member_login_key` FR OM `members` WHERE `name` = '{$_COOKIE["BITRIX_SM_LOGIN"]}'"); $my = mysql_fetch_array($res); if($my['member_id'] == ''){ echo "Такого пользователя нету в базе данных";//Добавить его } else{ setcookie( "pass_hash", $my["member_login_key"], time()+3600,"/"); setcookie( "member_id", $my['member_id'], time()+3600,"/"); session_name("session_id"); session_start(); } } Вставлял его в шаблон форума с тегами <php></php> куки создавались, пользователь становился авторизованным, но только через раз, или если много раз перегрузить страницу. Понимаю что это MVC, код выполняется в модулях и т.д. Разбираться в этом всем нету желания. Подскажите пожалуйста, как сделать так, чтобы этот код работал, т.е. чтобы куки создавались до того, как идет проверка авторизации пользователя по кукам? Edited 10 марта, 20159 yr by Rostislav Link to comment https://ipbmafia.ru/topic/10780-ipb-sozdanie-kukov-do-proverki-avtorizacii/ Share on other sites Больше вариантов
10 марта, 20159 yr comment_82742 возможно заставит чувствовать злость и негодование ко мнеВовсе нет. На этом форуме, мало кто знает PHP на достаточном уровне. Вставлял его в шаблон форума с тегами куки создавались, пользователь становился авторизованным, но только через раз, или если много раз перегрузить страницу.Это во всех браузерах так? Или только в определённом? Link to comment https://ipbmafia.ru/topic/10780-ipb-sozdanie-kukov-do-proverki-avtorizacii/?&do=findComment&comment=82742 Share on other sites Больше вариантов
10 марта, 20159 yr Author comment_82745 Это во всех браузерах так? Или только в определённом? Сейчас проверил в фаерфоксе, опере, гугл хроме, все одно и то же. Куки создаються, пользователь становиться авторизлванным через раз Link to comment https://ipbmafia.ru/topic/10780-ipb-sozdanie-kukov-do-proverki-avtorizacii/?&do=findComment&comment=82745 Share on other sites Больше вариантов
10 марта, 20159 yr Author comment_82759 Тему можно закрывать. Проблема в том, что ipb нужно самому создавать session_id. Дописал: setcookie( "session_id", "",time() - 3600); //Удаляем session_id в котором еще нету авторизации setcookie( "pass_hash", $my["member_login_key"], time()+3600,"/"); setcookie( "member_id", $my['member_id'], time()+3600,"/"); header("Location: __forumpervoistok.b.infodesign.ru/"); //Обновляем страницу с моими куки, чтобы ipb создал session_id с авторизацией Link to comment https://ipbmafia.ru/topic/10780-ipb-sozdanie-kukov-do-proverki-avtorizacii/?&do=findComment&comment=82759 Share on other sites Больше вариантов
10 марта, 20159 yr comment_82815 Этот код полный п*здец. Кража ключей авторизации, sql инъекция, это только малая часть всех проблем. Автор, если не разбираетесь в безопасности не лезьте в таких вещах как авторизация пользователей. Учите для начала безопасность построения sql запросов. Link to comment https://ipbmafia.ru/topic/10780-ipb-sozdanie-kukov-do-proverki-avtorizacii/?&do=findComment&comment=82815 Share on other sites Больше вариантов
10 марта, 20159 yr comment_82816 Да ещё и вставлен этот код в обычный html шаблон... Link to comment https://ipbmafia.ru/topic/10780-ipb-sozdanie-kukov-do-proverki-avtorizacii/?&do=findComment&comment=82816 Share on other sites Больше вариантов
11 марта, 20159 yr Author comment_82840 Этот код полный п*здец. Кража ключей авторизации, sql инъекция, это только малая часть всех проблем. Автор, если не разбираетесь в безопасности не лезьте в таких вещах как авторизация пользователей. Учите для начала безопасность построения sql запросов. Хорошо. Просветите пожалуйста, как сделать так, чтобы идея была реализованна безопасным способом? Link to comment https://ipbmafia.ru/topic/10780-ipb-sozdanie-kukov-do-proverki-avtorizacii/?&do=findComment&comment=82840 Share on other sites Больше вариантов
11 марта, 20159 yr comment_82875 Для начала вам нужно уяснить одну элементарную вещь - авторизация пользователя нужно проводить на основе достоверных и валидированых данных, и никогда не доверять данным поступающим от пользователя. В куках можно представиться кем угодно, ваша задача состоит в том, чтобы проверить действительно ли данный пользователь является Vasya а не только прикидывается им. Если сессионные данные пользователя в битриксе например хранятся в сессиях PHP, авторизацию (идентификацию) нужно проводить через массив $_SESSION, который пользователь подделать не может. Если сессия хранится в базе данных, как в IPB, на основе идентификатора сессии клиента запросить данные из БД. Все это, по хорошему, нужно делать хуками, например расширив класс сессий, а не в шаблоне. В IPB есть специальный класс ssoSessionExtension, который вызывается когда создается или обновляется новая сессия. Не использовать нативные запросы типа mysql_query, и тем более левые подключения через mysql_connect. Для этого есть специальный класс DB доступный через $this->DB. Не использовать нативные функции и переменные для работы с кукисами. В IPB кукисы могут иметь префиксы. Чтения и запись куков проводится через специальные методы IPSCookie::set, IPSCookie::get. Link to comment https://ipbmafia.ru/topic/10780-ipb-sozdanie-kukov-do-proverki-avtorizacii/?&do=findComment&comment=82875 Share on other sites Больше вариантов
12 марта, 20159 yr Author comment_82890 В битриксе сессия существует в куках. В любом случаи нужно передавать в ipb какой пользователь(логин) сейчас авторизовался на сайте, и хочет быть авторизованным на форуме. На сколько я знаю, между поддоменами эта можно сделать только через куки... Link to comment https://ipbmafia.ru/topic/10780-ipb-sozdanie-kukov-do-proverki-avtorizacii/?&do=findComment&comment=82890 Share on other sites Больше вариантов
12 марта, 20159 yr comment_82940 В битриксе сессия существует в куках. У вас искаженное представление о работе сессий в целом. Ни в ИПБ, ни в битриксе, ни где либо еще сессии не хранятся в куках. Сессии хранятся на сервере. У клиента в кукисах находится только уникальный идентификатор по которому сервер определяет какая сессия ему принадлежит. Как правило это уникальный 32 символьный хэш md5. Разница ипб лишь в том, что сессии он хранит в базе данных, и не использует встроенный механизм php ($_SESSION). Имея идентификатор сессии, на основе него получаете сессионные данные текущего пользователя. Только по этим данным можно определить кто является текущем пользователем - Vasya Pukin или Guest который только представляется Васей Пукиным. Всем остальным данным поступающем от пользователя доверять не следует, ни логин, ни чему либо еще. В битриксе, на сколько я понял, используются стандартные сессии PHP, которые работают через глобальный массив $_SESSION. Если поддомены разные, кука которая содержит ид сессии сайта (по умолчанию это PHPSESSID) должна быть глобальной, чтобы на домене где установлен ипб php смог получить соответствующую сессию. Нужно либо капать настройки битрикса относительно кукисов, либо установить в нем session_set_cookie_params глобальный домен. __dev.1c-bitrix.ru/community/webdev/user/16002/blog/2112/ Link to comment https://ipbmafia.ru/topic/10780-ipb-sozdanie-kukov-do-proverki-avtorizacii/?&do=findComment&comment=82940 Share on other sites Больше вариантов
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.