Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт авторизации 
:(
    Опции темы
shutffl
Дата 5.8.2009, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Доброго времени суток !

Давно стояла проблема написания сайтов с авторизацией. Несколько раз пытался разобраться с CGI::Session, но безрезультатно. Читал и на CPAN, и тут, и просто поиском. Но так и не допер. В связи с этим, решил написать свою систему авторизации для сайта. Все бы ничего, но никак не могу придумать, какиим образом сделать обработку ссылок. Суть в том, что после проверки валидности логина/пароля пользователю присваивается некий personalCode, заносящийся в БД. А при переходе по ссылке с сайта этот код, естественно, не передается. Есть ли способ это исправить или стоит все таки убиться веником, но изучить CGI::Session?

Всем заранее спасибо за ответы.
--------------------
shadowmoon
PM MAIL   Вверх
ginnie
Дата 5.8.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 4
Всего: 49



shutffl, убиваться веником не стоит  smile  А вот изучить CGI::Session будет полезно. На странице http://search.cpan.org/~markstos/CGI-Sessi...ion/Tutorial.pm все, что надо описано. Задавайте вопросы!


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
sir_nuf_nuf
Дата 5.8.2009, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 2
Всего: 31



shutffl, стоит понять что такое авторизация.
Авторизация (на самом деле аутентификация) - это проверка что пользователь тот, за кого себя выдает.
Результатом авторизации является выдача уникального и длинного идентификатора - id сессии. Заметим, что это идентификатор может (и должен) не быть постоянным, он выдается на время.
Наличие этого идентификатора - как билет в поезд. Дает право.
По сути если ты "угадаешь" либо идентификатор - ты взломаешь аккаунт пользователя.

Этот идентификатор хранится у клиента:
- либо как hidden поле на всех формах
- либо как cookie (Да, вам нужно прочитать про них)

На стороне сервера с этим идентификатором могут быть связана структура данных - сессия. В сессии могут хранится что угодно - id пользователя (не путать с id сессии!!), какие - то временные настройки, все что захотите.

CGI::Session - это просто удобное средство хранения сессий и генерации их ID.  

Как передавать юзеру id сессии - дело ваше. Я предлагаю cookie.


И еще очень рекоменду - осмыслить процесс и разобраться с CGI::Ssession. Очень похоже что ваша система ни от чего не защищает =(


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
DaemonSuw
Дата 5.8.2009, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



Не особо работал с сессиями - а что мешает записывать его в куки и установить ему deadline, но мой совет послушайте sir_nuf_nuf =)

Это сообщение отредактировал(а) DaemonSuw - 5.8.2009, 15:59
PM MAIL ICQ   Вверх
gcc
Дата 5.8.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



1) там еще есть модуль авторизации, вместе сессиями
2) можете написать свои сессии и авторизацию
3) в MVC Catalyst собрано все сразу...
PM WWW ICQ Skype GTalk Jabber   Вверх
shutffl
Дата 5.8.2009, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Спасибо  всем за ответы!

Придется еще раз перечитать.. На счет "ничего не защищает".. На самом деле personalCode выдается на 30 минут; в БД лежит время авторизации пользователя, которое проверяется при переходе. Это-то как раз все предусмотрено. Вот только переход по ссылкам не знаю как сделать. А поле HIDDEN тут не совсем поможет, так как оно учитывается только при Submit формы, а при ссылочной системе переходов это нереально, если я не ошибаюсь. Ну разве что JS тут поможет с onClick, но там я тоже не нашел как параметры передавать методу formName.Submit().
--------------------
shadowmoon
PM MAIL   Вверх
shutffl
Дата 5.8.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Господа (и дамы, еси таковые тут имеются).. Перечитал, но все равно ничего не понял. Признаю это. Можно примерчик какой или пошаговую интсрукцию. Ну или тупо пример на две-три html-страницы.
--------------------
shadowmoon
PM MAIL   Вверх
sir_nuf_nuf
Дата 5.8.2009, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 2
Всего: 31



shutffl, а чем вас переход по ссылкам смущает ? 
где вы храните этот самый personalCode ? в куках или в hiden полях ?


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
gcc
Дата 5.8.2009, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



можете посмотреть тут http://phoinix.ucoz.ru/publ/2-1-0-20

но лучше использовать модули готовые...  
есть http://search.cpan.org/~markstos/CGI-Sessi.../CGI/Session.pm 

authentication и authorizationдальше легко сделать

вот тут вот для каталиста написано как настроить его модули http://search.cpan.org/~hkclark/Catalyst-M...hentication.pod 

PM WWW ICQ Skype GTalk Jabber   Вверх
shutffl
Дата 5.8.2009, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Цитата(sir_nuf_nuf @  5.8.2009,  18:17 Найти цитируемый пост)
shutffl, а чем вас переход по ссылкам смущает ? 
где вы храните этот самый personalCode ? в куках или в hiden полях ? 

persenalCode хранится в БД. Смущает тем, что я не знаю, как его передавать.. Разве что к каждой ссылке добавлять, чтобы было что-то типа index.pl?act=addVideo&personalCode=<MD5Hash> . Еще я использую шаблоны и делаю вот так:
Код

<form method="get" action="index.pl">
          <TMPL_IF NAME="fShowAuthForm">
          <div class="authForm">
                          L: <input type="text" name="login" maxlength="20" size="10" />
                          P: <input type="password" maxlength="40" name="password" size="10" />
                          <br />
                          <input type="submit" value="Log In" />
          </div>
          <TMPL_ELSE>
          <p>
          Welcome, <i><TMPL_VAR NAME="login"></i> ! | <a href="index.pl?logout">Log Out</a>
          </p>
          </TMPL_IF>
          <input type="hidden" name="personalCode" value="<TMPL_VAR NAME="personalCode">">
          </form>


GET тут просто для тестирования стоит.

--

Собственно только что попробовал.. Выкрутился добавлением к ссылкам &personalCode=<..> . Теперь дело за малым.. Жаль только, что все ссылки теперь придется к такому виду приводить. Но с другой стороны, тот же CGI::Session вводит CGISESSION, добавляя ее, по умолчанию, в адресную строку (в запрос). Так что не критично в итоге.

Это сообщение отредактировал(а) shutffl - 5.8.2009, 21:24
--------------------
shadowmoon
PM MAIL   Вверх
Paul56
Дата 5.8.2009, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 19.9.2008
Где: Екатеринбург

Репутация: нет
Всего: нет



а где сам код ?
Вы попробуйте что то выполнить самостоятельно и выложить код сюда.

PM ICQ   Вверх
sir_nuf_nuf
Дата 5.8.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 2
Всего: 31



shutffl, ёклмн. почитайте про COOKIE  и про то как с ними работать в perl CGI::Cookie


Второй вариант - хранить в hidden полях.
Код

<form action="/bla" method="POST">
  <input type="hidden" name="session_id" value="s1243124njwef2o3r23"/>
  <input type="text" name="bla"/>
</form>



Но вариант с КУКАМИ - НАМНОГО лучше. Они для того и сделаны.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
gcc
Дата 5.8.2009, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



вот тут во тя писал http://x0.org.ua/perl/2/session.pm по этой статье http://phoinix.ucoz.ru/publ/2-1-0-20, но лучше модуль использовать CGI::Session
PM WWW ICQ Skype GTalk Jabber   Вверх
Alca
Дата 6.8.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: нет
Всего: 50



Цитата

shutffl, а чем вас переход по ссылкам смущает

Цитата

хранить в hidden полях

А если юзер в адресной строке браузера забивает адрес? Эти приколы разве можно как-то прикрутить?
А если скрипты отключены в настройках браузера?

Добавлено через 2 минуты и 49 секунд
http://forum.vingrad.ru/forum/topic-234498/unread-1.html
http://forum.vingrad.ru/forum/topic-224253/unread-1.html
http://forum.vingrad.ru/forum/topic-231250/unread-1.html
http://forum.vingrad.ru/forum/topic-23902/unread-1.html



--------------------
PM WWW ICQ Skype Jabber   Вверх
gcc
Дата 6.8.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



там есть такая штука как REST для Catalyst видел через Ajax передается сессия, для высоконагруженных сайтов

http://search.cpan.org/search?query=cataly...st&mode=all
PM WWW ICQ Skype GTalk Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0585 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.