Последние 2 года я разрабатывал довольно «большое приложение» с фреймворком PHP и kohana, несколько успешно используя механизм аутентификации моей фреймворки. но за это время и по мере роста приложения возникло много вопросов, касающихся сохранения государства.
Основными проблемами являются сеансы, управляемые файлами cookie:
- нельзя использовать для доступа к веб-сервису (по крайней мере, это нехорошо ...)
- во многих случаях проблематично с мобильным доступом
- не разрешать одновременное использование нескольких приложений в одном браузере (может быть решена путем хитрого обмана, но все же ..)
- требует много конфигураций и беспорядка, чтобы работать на 100% правильно, и это без проблем --browser (отключенные куки, ошибки старых браузеров и уязвимости и т. Д.)
множество других недостатков сеанса, указанных в этом старом потоке: http://lists.nyphp.org/pipermail/talk/2006-December/020358.html
После очень долгих исследований и без какой-либо хорошей библиотеки / имеющегося решения для моих нужд я придумал индивидуальное решение для большинства из этих проблем.
Решение, о котором я подумал, - не использовать куки (для обеспечения полноты). вместо этого эмулируйте его, передавая взад и вперед токен сеанса через запросы ajax.
В целях безопасности токен сеанса создается заново при каждом запросе.
Кроме того, отпечаток пальца (реферер, ОС, clientVer) сохраняется при создании сеанса и проверяется при каждом запросе.
С первого взгляда, который должен быть не менее безопасным, чем эквивалентная реализация на основе файлов cookie, и в то же время он простой, обслуживаемый и устраняет все недостатки cookie.
Но я действительно обеспокоен, потому что я часто слышу правило «не пытайтесь внедрять индивидуальные решения безопасности».
Я буду очень признателен за любые серьезные отзывы об этом методе и любых альтернативах.
также, любой совет о том, как сохранить состояние при обновлении страницы без файлов cookie, был бы хорош :), но это небольшая техническая проблема.
Извините, если я пропустил какой-то похожий пост ... их сессий миллиарды.
Большое спасибо заранее (и за чтение до здесь!).