Я создаю систему сеансов для сервера Happstack, и я использую mongoDB для постоянного хранения. Мне было интересно, безопасны ли идентификаторы объектов MongoDB для использования в качестве идентификаторов сеанса.MongoDB ObjectID safe для идентификатора сеанса
ответ
Вообще говоря, идентификаторы объектов MongoDB уникальны во всем мире и поэтому безопасны, если вас беспокоит столкновение.
Однако, если вы говорите об идентификаторе сеанса, вопрос действительно зависит от того, как вы шифруете его на стороне клиента и как. Как правило, ответы на эти вопросы должны быть да и как зашифрованное значение cookie, непрозрачное для клиента. Обычно любой веб-сервер, который вы используете, будет иметь утилиты, чтобы помочь с этим.
Опять же, если вы просто пытаетесь убедиться, что у вас есть уникальный идентификатор и хотите использовать идентификатор объекта в качестве источника, вы в порядке.
MongoDB ObjectID имеет длину 12 байтов [1], а идентификатор сеанса, вероятно, реализован как 32 байта [2]. Разница в том, что злоумышленнику легче угадать свой идентификатор сеанса, если он является объектной идентификацией MongoDB, но ваша безопасность сеанса обычно не ограничивается только наличием трудноопределяемого идентификатора сеанса.
Тем не менее, есть идея, рекомендующая идентификатор сеанса, должен бить менее 16 байтов [3]. В этом случае идентификатор идентификатора Vano MongoDB не является безопасным для идентификатора сеанса.
[1]. https://godoc.org/labix.org/v2/mgo/bson#ObjectId [2]. https://astaxie.gitbooks.io/build-web-application-with-golang/content/en/06.2.html [3]. https://www.owasp.org/index.php/Session_Management_Cheat_Sheet
- 1. Сгенерированный ObjectId для MongoDB
- 2. Сериализация MongoDB ObjectId для строки
- 3. Почему параметр сеанса с типом ObjectID (MongoDB) преобразуется в строку?
- 4. mongodb custom objectId
- 5. Meteor.Collection.ObjectID() vs MongoDB ObjectId()
- 6. Default ObjectId в MongoDB
- 7. MongoDB ObjectId использование
- 8. MongoDB $ oid vs ObjectId
- 9. MongoDB objectID незнакомец Ошибка
- 10. MongoDB update Поле ObjectId
- 11. Symfony2 MongoDB Doctrine ObjectID
- 12. Regex for MongoDB ObjectID
- 13. PHP convert MongoDB objectID
- 14. Изменить политику идентификатора mongodb
- 15. Строка проекта агрегации MongoDB для ObjectId
- 16. создает два идентификатора для сеанса
- 17. MongoDB извлекает значения ObjectId Array
- 18. Использование функционального идентификатора с MongoDB
- 19. Получить коллекцию MongoDB от ObjectID
- 20. C# mongodb ObjectId риск использования
- 21. MongoDB: $ с использованием массива ObjectId
- 22. bson-objectid и auto generated objectID
- 23. Данные Spring MongoDB: преобразование BigInteger в ObjectId
- 24. Производительность MongoDB в режиме SAFE
- 25. MongoDB - Совокупные $ матч на ObjectId
- 26. MongoDB ObjectId разбора в JavaScript
- 27. php7 MongoDB не ObjectId найдено
- 28. mongodb-wrapper и ObjectId записи
- 29. маршрутизации MongoDB ObjectId через ServiceStack
- 30. MongoDB ObjectID и извлечение даты
Не имеет смысла (или, по крайней мере, быть быстрее) использовать криптографически безопасное случайное значение как идентификатор вместо ObjectID? Я думаю, что шифрование и дешифрование идентификаторов все время может привести к некоторым проблемам производительности? – NatureShade
Собственно, поскольку клиент никогда не имеет доступа к идентификатору сеанса (только сервер когда-либо читает его), он подвержен довольно быстрому шифрованию. Посмотрите, как это делает Rails. В качестве побочного примечания особенно полезно использовать ObjectId, если ваш магазин сеансов поддерживается чем-то вроде MongoDB (опять же, Devise in Rails - пример). – TreyE