|
|
|
| Ребята, посетила одна мысль.
Хотелось бы написать скрипт, который в случаи успешной авторизации юзера добавлял бы его в табличку session(session_id, putdate, ip_session,agent,randomA,randomB)
То есть юзер зарегистрировался и в табличку добавился его SID и два рандмайз числа(их сохраним в сессии юзера). И далее прикручиваем скрипт следующего содержания к каждой страничке: если в таблице session юзер с сессиоными данными(рандомны числа + SID) имеется уже то обновляем его время на страничке. А далее строку запроса на удаление юзверей с момента регистрации которых прошло больше 10 минут.
Trianon, cheops, посетители как вам такой подход ?
Увеличит ли он безопасность ? | |
|
|
|
|
|
|
|
для: PhMaster
(23.10.2009 в 15:00)
| | я так понял это будет скрипт просто дял просмотра пользователей онлайн.
>и два рандмайз числа(их сохраним в сессии юзера)
это по-моему вообще бред какой-то. может лучше сохранить ip и браузер?
не понимаю причем здесь безопасность | |
|
|
|
|
|
|
|
для: psychomc
(23.10.2009 в 15:04)
| | Да видимо я что-то поторопился. А что значит браузер, это агент что ли ? Не подскажите как агент проверять на идентичность сессии весь $_SERVER['HTTP_AGENT'] или что-то вырезать в строке агента ? | |
|
|
|
|
|
|
|
для: PhMaster
(23.10.2009 в 16:48)
| | да, оно самое. ничего не надо вырезать. просто в принципе можно на страницах кроме ip проверять и это. а вообще, я делал универсальный идентификатор вроде такого:
md5($_SERVER["REMOTE_ADDR"].$_SERVER["HTTP_AGENT"])
и потом по нему проверял тот ли это пользователь
(никому ничего не навязываю) | |
|
|
|
|
|
|
|
для: psychomc
(23.10.2009 в 17:46)
| | То есть вы так же как и я, в сессии сохраняете данную конъюнкцию ? А потом проверяете ?
md5($_SERVER["REMOTE_ADDR"].$_SERVER["HTTP_AGENT"]) | |
|
|
|
|
|
|
|
для: PhMaster
(24.10.2009 в 13:17)
| | что такое конъюнкция? | |
|
|
|
|
|
|
|
для: Trianon
(24.10.2009 в 13:19)
| | md5($_SERVER["REMOTE_ADDR"].$_SERVER["HTTP_AGENT"])
Конъюнкция - это эквивалент логического и. В данном контексте я имел ввиду конъюнкцию ip-адреса клиента и его агента. | |
|
|
|
|
|
|
|
для: PhMaster
(23.10.2009 в 15:00)
| | нет | |
|
|
|
|
|
|
|
для: PhMaster
(23.10.2009 в 15:00)
| | по поводу безопасности. Написал такой код в index.php:
<?php
session_start();
if(!isset($logged_user))
$logged_user="гость";
session_register("logged_user");?>
|
потом в адресной сторке пишу index.php?logged_user=xXx - заходит на страничку все равно как гость. так что думаю по поводу безопасности париться не стоит | |
|
|
|
|
|
|
|
для: jackson05
(23.10.2009 в 20:21)
| | jackson05 Я видимо чего то не допонимаю, как говоря о безопасности можно приводить такой код?
А если я введу такой URL: www.site.ru/index.php?logged_user=admin ??? | |
|
|
|
|
|
|
|
для: durable
(23.10.2009 в 22:15)
| | Читал статью, как страшно использование сессий при авторизации, типа методом гет можно передать ей значение существующего имени, и войти вот так просто без пароля....была приведена куча скрипта, как очистить строку от лишнего, как запретить доступ к странице, если запрос извне (т.е. не со страницы своего сайта) и т.д. Перепугавшись, стал пробовать... ничего не получилось подставляя в строку имя переменной.
Хотя может под безопасностью я понимаю не общепринятое явление. Собсна я только как месяц начал програмить | |
|
|
|
|
|
|
|
для: jackson05
(24.10.2009 в 12:10)
| | да, какие же всё-таки ******** разработчики что придумали такой ********* механизм как сессии который так легко ломают люди, пишущие умные статьи. можно ссылку на статью? | |
|
|
|
|
|
|
|
для: psychomc
(24.10.2009 в 12:25)
| | Я думаю, имелось в виду, что ломают не сессии, а используют дырки, оставленные программером, юзавшим сессии. | |
|
|
|
|
|
|
|
для: psychomc
(24.10.2009 в 12:25)
| | http://www.getinfo.ru/article250.html | |
|
|
|
|
|
|
|
для: jackson05
(24.10.2009 в 12:44)
| | Вы статью до конца дочитали? Там внизу дополнение от 2001 года!!
Во-первых, дополнение очень дельное
Во-вторых, я вообще поражаюсь, откуда вы это нарыли. Статье уже около 10ти лет, а вы по ней учитесь..Ну удачи вам, удачи. | |
|
|
|
|
|
|
|
для: neadekvat
(24.10.2009 в 12:51)
| | ))) обратил после того как использовал... все работало, вот и пока ничего не менял | |
|
|
|
|
|
|
|
для: jackson05
(23.10.2009 в 20:21)
| | Ваш код вообще ни о чём. Даже теряюсь, что бы Вам такого посоветовать почитать. | |
|
|
|
|
|
|
|
для: jackson05
(23.10.2009 в 20:21)
| | Расскажите, пожалуйста, что делает ваш код. Построчно прокомментируйте. | |
|
|
|
|
|
|
|
для: neadekvat
(24.10.2009 в 11:54)
| | стартуем сессию, проверяем задана ли в сессии переменная юзера, если нет - присваиваем ей значение гость (появится приветствие "привет, гость"). В случае авторизации , направляемся на эту страницу, опять проверка, теперь переменная задана (пусть бдует админ), и появится приветствие "привет, админ" | |
|
|
|
|
|
|
|
для: jackson05
(24.10.2009 в 12:03)
| | Что-то я не вижу тут суперглобальных переменных, н-р, $_SESSION. register_globals должны быть off.
Соответственно, т.к. надо использовать $_SESSION, session_register() можно смело убирать.
И потом. Я могу просто стащить кукисы у админа и буду админом, т.к. никаких проверок пользователя не ведется вообще.
Это то же самое, что я встану на протоптанную тропинку в лесу и не буду пускать никого, кто идет по этой тропинке. Только ленивый не придет к простому решению - обойти меня. Ведь там я не трогаю.
Так же и у вас в коде.
На самом деле я должен стоять с автоматом и не пускать никого, прямо он идет, или обходит за км. | |
|
|
|
|
|
|
|
для: neadekvat
(24.10.2009 в 12:17)
| | впринципе session_register() мне хватило для получения логина пользователя из любой страницы, админа у меня нет вообще - поставил на своем компе апач, все что надо поправить - поправляю прямо на месте.
Хотя если дадите что то стоящее почитать - прочту с удовольствием | |
|
|
|
|
|
|
|
для: jackson05
(24.10.2009 в 12:50)
| | Гугл в помощь
Сейчас в интернете масса статей, где рассказывается про register_globals, сессии и тп.. | |
|
|
|
|
|
|
|
для: neadekvat
(24.10.2009 в 12:56)
| | проверил register_globals, включено...
Но, используя свой код, так и не могу добиться что б при отправке через гет переменной, зарегить ее в сессии.... В чем прикол? | |
|
|
|
|
|
|
|
для: jackson05
(24.10.2009 в 13:16)
| | > проверил register_globals, включено...
А должно быть выключено.
> не могу добиться что б при отправке через гет переменной, зарегить ее в сессии
<?php
session_start();
$_SESSION['value'] = $_GET['value'];
|
Естесственно, это только пример. Все данные, которые приходят от пользователя, надо проверять и обрабатывать. | |
|
|
|
|
|
|
|
для: neadekvat
(24.10.2009 в 13:22)
| | Не так меня понял, я спрашиваю с точки зрения безопасности - говорите, что код вшивый и бородатый, а зайти под именем чужим не получается, используя гет-метод... вот и спрашиваю, почему?
А во вторых просто не пойму в чем опасность. Вот например этот же код, в котором переменная logged-user несет значение либо логина зарегившегося юзера, либо гость. Что бы попытаться ввести со строки значение этой переменной, нужно знать имя самой этой переменной. А почему то все примеры исходят из знания потенциальным взломщиком этой переменной | |
|
|
|
|
|
|
|
для: jackson05
(24.10.2009 в 14:05)
| | Уж не знаю, знаете ли вы английский, но logged user переводится (с учетом интернет-сленга) как авторизовавшийся пользователь.
Переменные обычно имеют имя, соответствующее тому, что сама переменная в себе хранит. Многие такие переменные одинаковы в разных скриптах, даже написанных разными людьми.
Но суть не в этом, а в том, что "register_globals = on" опасно не только для данного скрипта, но и для работоспособности многих частей сайта в принципе
А лично ваш скрипт не подходит потому (и это я уже объяснял), что не ведется никакой провекри подлинности пользователя, т.е. что ключ серверу дает уже совсем другой человек - мошенник.
Это то же самое, что (где-то пример видел), если на военной базе дежурному будет известно - придет человек по имени Андрей в зеленой форме и скажет пароль "Ракета", а приходит Вася в красном спортивном костюме и говорит "Ракета", при этом поминутно оглядываюсь и не смотря в глаза. Я не пропущу Васю. А вы со своим скриптом еще и чаю предложите. | |
|
|
|
|
|
|
|
для: neadekvat
(24.10.2009 в 14:37)
| | А что мешает обозвать logged_user к примеру банальной а?
Хорошо, под проверкой подлинности что понимается ввиду? последний айпи? Дома один, на работе другой... или пускать только из дому, а зайдя с работы юзер обломается?
Да и пока что речь не в проверке, зная и переменную и видя код не получается передать ей значение... опять вопрос - почему? | |
|
|
|
|
|
|
|
для: jackson05
(24.10.2009 в 16:38)
| | > А что мешает обозвать logged_user к примеру банальной а?
Называйте.
Потом веселый код получится у вас:
<?php
$a = $b + $c;
$d = trim($e);
$f = mysql_real_escape_string($g);
|
Очень понятный и информативный
> Хорошо, под проверкой подлинности что понимается ввиду? последний айпи? Дома один, на работе другой... или пускать только из дому, а зайдя с работы юзер обломается?
На эту тему много и долго дискутируют, здесь в частности. Как проверять - решает каждый для себя сам.
> Да и пока что речь не в проверке, зная и переменную и видя код не получается передать ей значение... опять вопрос - почему?
Не понял вопроса | |
|
|
|
|
|
|
|
для: neadekvat
(24.10.2009 в 17:00)
| |
<?php
session_start();
if(!isset($logged_user))
$logged_user="гость";
session_register("logged_user");?>
|
Вот такой код в начале index.php. Потом хтмл теги выводят "Привет, <? echo "$logged user"; ?>".
Теперь сам вопрос. Пишу в браузере 127.0.0.1/index.php?logged_user=admin. Но подстановка не происходит, выводится "гость". Почему? Надо уточнить что если войти из под формы авторизации (которая перенаправляет на index.php) - все работает как надо, появляется приветствие "Привет, admin".
З.ы. не дорос до базы данных, все пишу через файлы | |
|
|
|
|
|
|
|
для: jackson05
(24.10.2009 в 18:07)
| | Видимо, register_globals = off | |
|
|
|
|
|
|
|
для: neadekvat
(24.10.2009 в 18:09)
| | :( говорю же включено, проверял | |
|
|
|
|
|
|
|
для: jackson05
(24.10.2009 в 18:14)
| | Вы так говорите, будто то, что это включено - хорошо.
Выключайте и переписывайте ваш скрипт.
Прочитайте про суперглобальные переменные. | |
|
|
|
|
|
|
|
для: jackson05
(24.10.2009 в 18:14)
| | . | |
|
|
|
|
|
|
|
для: neadekvat
(24.10.2009 в 18:24)
| | покажусь назойливым, но использовать новое только изза того, что оно новое... и вразумительного ответа я так и не получил, чем опасен включенный register_global(); ведь все примеры подразумевают известное имя регистрируемой в сессии переменной. | |
|
|
|
|
|
|
|
для: jackson05
(24.10.2009 в 20:20)
| | http://freshcoder.ru/archives/351
Ну, почитайте тут.
Но помните, что разрабатывая скрипты с включенным register_global(), вы роете себе яму, ибо разработав масштабный сайт и залив его на хостинг, вы можете быть неприятно удивлены.. | |
|
|
|
|
|
|
|
для: neadekvat
(24.10.2009 в 20:56)
| | спустя неделю получил ответ на вопрос "почему не происходила подстановка при таком вводе mysite/index.php?logged-user=admin" в коде
<?php
session_start();
if(!isset($logged_user))
$logged_user="гость";
session_register("logged_user");?>
|
Дело в том, что сначала заходил на начальную страницу (сессия естесно уже регистрировалась), а потом уж пытался подменить имя пользователя.
счас немного поправил код:
<?php
unset($logged_user);
session_start();
session_register($logged_user);
if(!isset($logged_user))
$logged_user="гость";
session_register("logged_user");?>
Теперь подстановка не происходит | |
|
|
|
|
|
|
|
для: jackson05
(30.10.2009 в 21:57)
| | [поправлено модератором] | |
|
|
|