У меня есть ряд вопросов по поводу использования сессий и крекеров.
1. Безопасно ли записывать в сессию только ID пользователя или стоит создавать 2 переменных, вторая из которых бы хранила md5 пароля? То есть не сможет ли никто подделать сессию, вписав просто ID или UserName жертвы. Элмент массива $_SESSION может иметь любой ключ, то есть переменная с любым ключем будет безопасна и корректно передаваться?
2. Как и реагируя на какие события стоит продливать действие крекера? Я так подозреваю, что продление осуществляется той же, что и создание/уничтожение... кстати, создавать крекер не можно просто присвоив значение $_COOKIE (есть ли возможность передавать время действия и URL действительности куки при таком методе)?
3. Насколько я понял функция setcookie() отправляет заголовки, что не даст возможность потом использовать функцию header(), как избежать подобного (опять же вопрос о присвоении элементу массива)?
4. Хотелось бы услышать комментарии по поводу своего алгоритма.
Авторизация:
Считываем имя/пароль и сверяем их с базой данных и если существует такой пользователь записываем его ид в сессию с ключем 'id' (если установлена галочка автоматический вход
создаем куки с имене id (его номер) и pass (md5 пароля)) и редирект на главную страницу, иначе вывод про ошибку в самой форме авторизации.
Повседненвая проверка (на каждой странице)+автоматическая авторизация:
Если существует сессия с его ID тогда просто отображаем страницу, иначе проверяем существует ли кукис, если существует - свереям (правильный ID и Pass - продливаем куки и создаем сессию с ID, иначе удаляем куки).
Выход:
Просто удаляем все сессии и все крекеры.
Собственно и все.
|