![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| shutffl |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 18.8.2008 Репутация: нет Всего: 3 |
Доброго времени суток !
Давно стояла проблема написания сайтов с авторизацией. Несколько раз пытался разобраться с CGI::Session, но безрезультатно. Читал и на CPAN, и тут, и просто поиском. Но так и не допер. В связи с этим, решил написать свою систему авторизации для сайта. Все бы ничего, но никак не могу придумать, какиим образом сделать обработку ссылок. Суть в том, что после проверки валидности логина/пароля пользователю присваивается некий personalCode, заносящийся в БД. А при переходе по ссылке с сайта этот код, естественно, не передается. Есть ли способ это исправить или стоит все таки убиться веником, но изучить CGI::Session? Всем заранее спасибо за ответы. --------------------
shadowmoon |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
shutffl, убиваться веником не стоит
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 2 Всего: 31 |
shutffl, стоит понять что такое авторизация.
Авторизация (на самом деле аутентификация) - это проверка что пользователь тот, за кого себя выдает. Результатом авторизации является выдача уникального и длинного идентификатора - id сессии. Заметим, что это идентификатор может (и должен) не быть постоянным, он выдается на время. Наличие этого идентификатора - как билет в поезд. Дает право. По сути если ты "угадаешь" либо идентификатор - ты взломаешь аккаунт пользователя. Этот идентификатор хранится у клиента: - либо как hidden поле на всех формах - либо как cookie (Да, вам нужно прочитать про них) На стороне сервера с этим идентификатором могут быть связана структура данных - сессия. В сессии могут хранится что угодно - id пользователя (не путать с id сессии!!), какие - то временные настройки, все что захотите. CGI::Session - это просто удобное средство хранения сессий и генерации их ID. Как передавать юзеру id сессии - дело ваше. Я предлагаю cookie. И еще очень рекоменду - осмыслить процесс и разобраться с CGI::Ssession. Очень похоже что ваша система ни от чего не защищает =( |
|||
|
||||
| DaemonSuw |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 11.3.2008 Репутация: нет Всего: 3 |
Не особо работал с сессиями - а что мешает записывать его в куки и установить ему deadline, но мой совет послушайте sir_nuf_nuf =)
Это сообщение отредактировал(а) DaemonSuw - 5.8.2009, 15:59 |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 2 Всего: 17 |
1) там еще есть модуль авторизации, вместе сессиями
2) можете написать свои сессии и авторизацию 3) в MVC Catalyst собрано все сразу... |
|||
|
||||
| shutffl |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 18.8.2008 Репутация: нет Всего: 3 |
Спасибо всем за ответы!
Придется еще раз перечитать.. На счет "ничего не защищает".. На самом деле personalCode выдается на 30 минут; в БД лежит время авторизации пользователя, которое проверяется при переходе. Это-то как раз все предусмотрено. Вот только переход по ссылкам не знаю как сделать. А поле HIDDEN тут не совсем поможет, так как оно учитывается только при Submit формы, а при ссылочной системе переходов это нереально, если я не ошибаюсь. Ну разве что JS тут поможет с onClick, но там я тоже не нашел как параметры передавать методу formName.Submit(). --------------------
shadowmoon |
|||
|
||||
| shutffl |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 18.8.2008 Репутация: нет Всего: 3 |
Господа (и дамы, еси таковые тут имеются).. Перечитал, но все равно ничего не понял. Признаю это. Можно примерчик какой или пошаговую интсрукцию. Ну или тупо пример на две-три html-страницы.
--------------------
shadowmoon |
|||
|
||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 2 Всего: 31 |
shutffl, а чем вас переход по ссылкам смущает ?
где вы храните этот самый personalCode ? в куках или в hiden полях ? |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
| shutffl |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 18.8.2008 Репутация: нет Всего: 3 |
persenalCode хранится в БД. Смущает тем, что я не знаю, как его передавать.. Разве что к каждой ссылке добавлять, чтобы было что-то типа index.pl?act=addVideo&personalCode=<MD5Hash> . Еще я использую шаблоны и делаю вот так:
GET тут просто для тестирования стоит. -- Собственно только что попробовал.. Выкрутился добавлением к ссылкам &personalCode=<..> . Теперь дело за малым.. Жаль только, что все ссылки теперь придется к такому виду приводить. Но с другой стороны, тот же CGI::Session вводит CGISESSION, добавляя ее, по умолчанию, в адресную строку (в запрос). Так что не критично в итоге. Это сообщение отредактировал(а) shutffl - 5.8.2009, 21:24 --------------------
shadowmoon |
||||
|
|||||
| Paul56 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 19.9.2008 Где: Екатеринбург Репутация: нет Всего: нет |
а где сам код ?
Вы попробуйте что то выполнить самостоятельно и выложить код сюда. |
|||
|
||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 2 Всего: 31 |
shutffl, ёклмн. почитайте про COOKIE и про то как с ними работать в perl CGI::Cookie
Второй вариант - хранить в hidden полях.
Но вариант с КУКАМИ - НАМНОГО лучше. Они для того и сделаны. |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 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
|
|||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
А если юзер в адресной строке браузера забивает адрес? Эти приколы разве можно как-то прикрутить? А если скрипты отключены в настройках браузера? Добавлено через 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 |
||||
|
|||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 2 Всего: 17 |
там есть такая штука как REST для Catalyst видел через Ajax передается сессия, для высоконагруженных сайтов
http://search.cpan.org/search?query=cataly...st&mode=all |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |