Intereting Posts
загружать изображения в облачные хранилища Google через PHP из LAMP на вычислительном движке У меня проблемы с SOAP в PHP Как подключить MSSQL от PHP 7, Plesk 12.5, установленный на CentOS 7 Загрузка статьи в шаблон компонентов в Joomla как выделить результаты поиска Создание настраиваемого шаблона страницы в WordPress Cake PHP MySql Connection PHP Получить строку после определенного соответствия шаблону регулярного выражения Проверьте, является ли один массив подмножеством другого Как заставить определенную версию TLS в контексте потока PHP для транспорта ssl: //? Тест блока базы данных, связанный с детализацией реализации Как проверить, включена ли поддержка PDO в моей установке Apache? Каковы допустимые примеры использования goto в PHP? применение или операция между регулярным выражением Как получить уникальные значения из столбца и сгруппировать их со значениями из другого столбца?

Система регистрации файлов cookie / сеансов

Когда пользователь входит в систему, я получаю его / ее идентификатор и сохраняю его в сеансе var. Интересно, так ли это? Или я должен использовать файлы cookie? поэтому он автоматически войдет в систему и так далее.

session_start(); ifcorrectlogin { $_SESSION['id'] = mysql_result($loginQuery, 0, 'user_id'); } 

как вы аутентифицируете своих пользователей?

// Новичок

Да, это путь. Сам сеанс уже поддерживается куки-файлом, чтобы удалить вас при любых усилиях по программированию. Сеанс (фактически, файл cookie) будет работать до тех пор, пока пользователь не откроет экземпляр браузера или пока сеанс не закончится на стороне сервера, потому что пользователь не посещал сайт в течение определенного времени (обычно около 30 минут).

При входе в систему просто поместите полученный User в $_SESSION . При каждом запросе на страницах с ограниченным доступом вы просто проверяете, доступен ли зарегистрированный User в $_SESSION и обрабатывать запрос соответственно, то есть продолжать его или перенаправлять на страницу входа или ошибки. При выходе из системы просто удалите User из $_SESSION .

Если вы хотите добавить опцию « Запомнить меня на этом компьютере» , вам нужно добавить еще один файл cookie, который живет дольше, чем сеанс. Вам нужно только обеспечить, чтобы вы генерировали длинное, уникальное и труднодоступное значение для файла cookie, иначе его слишком легко взломать. Посмотрите, как это сделал PHP, проверив файл cookie с именем phpsessionid в вашем phpsessionid .

Печенье можно легко манипулировать. Управление входами / выходами с помощью сеансов. Если вы хотите, вы можете сохранить имя пользователя электронной почты / имя пользователя в файле cookie и заполнить поле имени пользователя для них в следующий раз, когда они посещают, после того как истечет текущий сеанс.

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

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

Как упоминает BalusC , функции session_ php в php – это путь, ваша основная идея звучит. Но есть еще много разных реализаций, некоторые из них имеют свои подводные камни. Например, как объясняет Джонатан Самсон , использование файлов cookie может привести к сбоям в безопасности.

Мой PHP немного ржавый, но я помню, что session_ -функции могут также использовать идентификаторы сеансов, которые закодированы в URL-адресах. (Также была возможность добавить это автоматически во все локальные ссылки (как GET) и сформировать целевые объекты (как POST). Но это тоже было без риска.) Один из способов предотвратить захват сеанса путем копирования SID – запомнить IP-адрес и сравнить его для любого запроса, который поставляется с действительным идентификатором сеанса для IP-адреса, который отправил этот запрос.

Как вы можете видеть, основной метод – это только начало, есть еще много вещей, которые нужно учитывать. Поэтому рекомендация SapphireSun – это то, что нужно учитывать: используя хорошо протестированную библиотеку, вы можете получить хороший уровень безопасности, не используя ценное время разработки для разработки собственной системы сеанса. Я бы рекомендовал этот подход для любой системы, которую вы хотите развернуть в реальном мире.

OTOH, если вы хотите узнать о сеансах PHP и проблемах с безопасностью, вам обязательно нужно сделать это самостоятельно, если бы только понять, как этого не делать 😉