Управление сессиями через чистый CGI - PullRequest
1 голос
/ 13 июля 2010

В настоящее время я нахожусь в процессе написания небольшой системы публикации блогов / общих сообщений, использующей CGI в C в качестве хобби-проекта, и теперь мне нужна система управления сеансами для аутентификации авторизованных пользователей для публикации, редактирования и аналогичных операций над несколько CGI-программ

Работая с PHP несколько лет назад, я помню, как использовал суперглобальную переменную $_SESSION и некоторые функции инициализации сеанса. Очевидно, это не сработает при работе с чистым CGI, поэтому я нахожусь в сложной ситуации.

Немного размышлений показало, что есть много разных способов сделать такиевещь ...

  1. Сохранение IP-адреса и атрибутов в файле, где я могу видеть, разрешен ли конкретный IP-адрес
  2. То же, что # 1, но с использованием базы данных SQLite (мойДвижок уже работает на SQLite, поэтому дополнительных затрат не возникнетВы хорошие люди думаете?Какой самый эффективный (и самый важный) и обслуживаемый метод?

    Обратите внимание, что я не хочу получить стороннюю библиотеку, которая сделает все сложные вещи для меня!Я начал этот проект, чтобы создать что-то полностью самостоятельно (если вы игнорируете SQLite здесь), и я не хочу скрывать сложные части, даже если это делает все намного проще.Я мог бы просто использовать Python, если бы не хотел мучить себя:)

1 Ответ

3 голосов
/ 13 июля 2010

Управление сеансами на основе файлов cookie - это путь. Вы не можете просто использовать IP-адрес, даже комбинацию IP-адрес + браузер, потому что это не удастся, если люди используют прокси или находятся за NAT.

Просто отправьте браузеру хеш-код в файле cookie, а затем проверьте его для вашей записи для пользователя, если он совпадает, вы можете получить доступ к данным для сеанса этого пользователя.

Рассмотрите возможность добавления механизма истечения для хеша. Существует компромисс между безопасностью и простотой использования, потому что чем дольше тот же хеш действителен для пользователя, тем дольше пользователь уязвим к атаке кражи файлов cookie.

Механизмы истечения срока действия также позволят вам удалить устаревшие данные сеанса из вашей базы данных (или файла, если вы того пожелаете).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...