Windows как запустить jvm
Если классический session_id используется с помощью файлов cookie на клиенте, в прошлом я сталкивался с попыткой захватить внешний активный сеанс (украсть и отправить его session_id).
Разработка / Re:Secure сеанс в PHP
Я бы не стал этого делать. В соответствии с правилами ЕС и законодательством Чехии файл cookie должен быть формой согласия. На данный момент он временно не работает (различные панели cookie часто устанавливают файл cookie до того, как посетитель дает согласие). Но это определенно плохой совет для нового проекта.
Пользователь определяет в настройках своего ПК или в настройках браузера, должен ли браузер разрешать веб-сайту сохранять файлы cookie на конечном устройстве. Данную настройку можно рассматривать как согласие на обработку персональных данных.Браузер является инструментом опосредования согласия. Однако согласие не может исправить другие недостатки или неправомерность обработки персональных данных.
Разработка / Re:Secure сеанс в PHP
Я бы не стал этого делать. В соответствии с правилами ЕС и законодательством Чехии файл cookie должен быть формой согласия. На данный момент он временно не работает (различные панели cookie часто устанавливают файл cookie до того, как посетитель дает согласие). Но это определенно плохой совет для нового проекта.
При регистрации и входе в систему пользователь в любом случае должен предоставить некоторые свои данные, и поэтому он уже должен быть охвачен GDPR. Без предоставления данных предоставление услуги вообще невозможно, это необходимое условие.
Но да, теоретически будет лучше запускать сессию только тогда, когда это необходимо, даже с точки зрения производительности и т. д. Так что если сессия не запущена, то запускайте ее только при входе в систему, см. https:// www.php.net/manual/en/function.session-status.php и https://www.php.net/manual/en/function.session-start.php
Разработка / Re:Secure сеанс в PHP
Только при освоении этого стоит поднимать планку иразвернуть JavaScript.
Не знаю, по-моему, это как учить печатать в школе и пользоваться компьютером за заслуги. Мой опыт подсказывает, что нужно обучать программистов разбираться в необходимых технологиях, но это, вероятно, вопрос личного мнения.
Разработка / Re:Secure сеанс в PHP
Отлично. Спасибо за помощь.
Спрошу еще раз. Есть ли способ справиться с ситуацией, когда у клиента отключены файлы cookie? Как ведет себя тогда сервер? На основании чего он подтверждает, что это данный пользователь.
Если суммировать по пунктам
а) есть страница входа на сервер
б) пользователь загружает страницу + вводит имя и пароль
в) отправляет форму (используя пост ?)
г) получить имя+пароль от почтового сервера (не знаю, безопасно ли это или тут уже что-то не так?). Пароль должен каким-то образом попасть из клиентской формы на мой сервер. Я не знаю, насколько это безопасно.
e) Я проверю пользователя на сервере и, если все в порядке, отправлю ему sessionid (случайно сгенерированный из-за угона или последовательно, если я использую jwt)
f) есть ли у клиента идентификатор, хранящийся в файле cookie? и при каждом запросе считывает из куки и отправляет мне?
Если я избавлюсь от куки, могу ли я просто сохранить идентификатор где-то в памяти? Мне не нужно, чтобы сеанс оставался активным, скажем, 10 часов. Я не делаю интернет-магазин, поэтому, если пользователь закроет вкладку и откроет новую, я могу легко заставить его снова войти в систему. Это не будет таким частым занятием (я полагаю).
Я также читал, что для более безопасного веб-сайта полезно отказаться от идентификатора сеанса для критических операций, создать новый и позволить пользователю повторно аутентифицироваться (просто чтобы убедиться, что это не подделка). Так что, если я столкнусь с важной частью (например, сменой пароля), я могу легко сделать это и таким образом.
Если вы установите для https://www.php.net/manual/en/session.configuration.php#ini.session.auto-start значение true, сеанс будет полностью работать в PHP.автоматически. Вы можете записать в сеанс в любое время, просто вставив значение в поле $_SESSION, и вы можете получить данные, прочитав из $_SESSION. PHP автоматически сохраняет идентификатор сеанса в файлах cookie в браузере, поэтому PHP сможет идентифицировать запрос браузера с соответствующим сеансом на сервере с каждым запросом. PHP также будет автоматически отслеживать время жизни сеанса. Если веб-сайт настроен на работу по принудительному https, он также относительно безопасен. Лучше полагаться на это готовое решение, присутствующее в PHP, чем пытаться реализовать сессию по-другому — шансы сделать ошибку при собственной реализации немалые.
В $_SESSION вы сохраняете все, что вам нужно, обычно идентификатор вошедшего в систему пользователя. Итак, при первом входе вы проверите наличие имени и пароля в базе (будете искать в базе хэши паролей, чтобы пароли не хранились там в читаемом виде) и в случае успеха сохраните пользователя идентификатор в $_SESSION. Для других запросов вы проверяете наличие идентификатора в $_SESSION и наличие пользователя в базе данных. Если найдено, то авторизовано, если нет, то не авторизовано. При выходе из системы лучше отменить всю сессию https://www.php.net/manual/en/function.session-destroy.php
При вводе имени и пароля будьте осторожны с внедрением SQL, лучше всего использовать готовую библиотеку. Просто используйте подготовленные операторы в PDO или расширениях PDO. У PDO тоже были некоторые уязвимости, но я не знаю текущий статус, поэтому, если возможно, кто-нибудь мне зальет (ИМХО, при использовании текущих версий Mysql и PHP это уже решено).