1. Deonis - 06 Ноября, 2015 - 09:01:40 - перейти к сообщению
Приветствую, господа! У меня есть пара маленьких вопросов в плане безопасности, а точнее её усилении. После успешной аутентификации, пользователю в сессию записывается токен, который подставляется во все формы и сверяется на сервере. Есть ли смысл записывать токен в БД и при каждом запросе сверять его еще и там? Вот сижу и думаю: если на одну чашу весов положить такую дополнительную меру, а на другую - мучит БД при каждом запросе, то сто́ит ли игра свеч? Да и вообще, имеет ли смысл использовать токен после успешной авторизации, если работа ведется по SSL? Может быть достаточно просто проверять: есть сессия или нет?
2. Viper - 06 Ноября, 2015 - 09:40:11 - перейти к сообщению
Если объект сессии хранится в БД то не имеет смысла дергать каждый раз, если иначе то обязательно.
А какая разница?
Deonis пишет:
имеет ли смысл использовать токен после успешной авторизации, если работа ведется по SSL?
А какая разница?
3. Deonis - 06 Ноября, 2015 - 10:31:32 - перейти к сообщению
Viper пишет:
Я просто пытаюсь разобраться. Организация безопасности - это моё самое слабое место, т.к. я к этому практически не имел отношения (до сегодняшнего дня). Мне досталась "в наследство" CRM, с которой я пытаюсь разобраться и, по возможности, оптимизировать её. На данный момент было организовано так:А какая разница?
1. Если пользователь не аутентифицирован, то генерируется случайный хеш, который используется, как токен в форме логина.
2. После успешной авторизации, этот хеш записывается в БД и в сессию.
3. При любом запросе, хеш из сессии сверяется с хешем в БД. Если гуд, то пользователь авторизован и работа продолжается, если нет, то выбрасывается на страницу логина.
4. Кроме того, этот хеш используется в формах в скрытых полях. Как я понимаю - это для защиты от CSRF.
Вот я и пытаюсь разобраться: нет ли тут чего лишнего и сделано ли по уму, может можно что-то упростить, а может надо кардинально что-то поменять, если допущены грубые ошибки.
4. Viper - 06 Ноября, 2015 - 10:51:12 - перейти к сообщению
Deonis пишет:
вот эту говняху лучше сократить до чего-то одного. Т.е. сессия в БД, с ней и работаем, незачем ещё писать в файл.При любом запросе, хеш из сессии сверяется с хешем в БД.
Deonis пишет:
всё верно.
Кроме того, этот хеш используется в формах в скрытых полях. Как я понимаю - это для защиты от CSRF.
5. Deonis - 06 Ноября, 2015 - 10:56:50 - перейти к сообщению
Viper пишет:
Можете кидаться камнями, но не понял. )) Как сократить и как тогда проверять, что юзер залогинен? Просто что-то вроде:Т.е. сессия в БД, с ней и работаем, незачем ещё писать в файл.