Используя Mongodb ObjectID в качестве идентификатора документа? - PullRequest
8 голосов
/ 16 августа 2011

Я пытаюсь сделать доску с mongoDB.

Я хочу назначить идентификатор документа с ObjectID.

Если пользователь может получить доступ к странице документа с помощью http://www.example.com/4easdf123123, где "4easdf123123" - это идентификатор объекта mongoDB.

Есть ли возможная угроза безопасности, если я использую и показываю mongo ObjectID в URL и использую его в качестве идентификатора документа?

А какие-нибудь предложения с присвоением идентификатора документа с mongoDB?

1 Ответ

8 голосов
/ 16 августа 2011

Это не похоже на ObjectID MongoDB - ObjectID представляет собой 12 байт двоичных данных, а при отображении в виде шестнадцатеричной строки (обычный способ использовать его в URL) он будет иметь длину 24 символа.Я предполагаю, что вы используете официальный PHP Mongo Driver , и в этом случае конструктор класса MongoId будет игнорировать недопустимые значения и сгенерирует для вас новое.В любом случае лучше позволить драйверу сгенерировать для вас ObjectID / MongoId, поскольку это будет сделано таким образом, чтобы избежать коллизий.

Что касается безопасности использования его в ваших URL, вывсе должно быть в порядке.Конечно, вы должны использовать обычные меры предосторожности при реализации кода, чтобы гарантировать, что текущий пользователь имеет доступ к просмотру отображаемого объекта и т. Д., Но при этом не существует большей угрозы безопасности при использовании ObjectID в URL, чем любой другой идентификатор базы данных (строка, целое число и т. д.), а часто и меньше, так как ObjectID не имеет семантического значения (тогда как строка типа «adminuser» в URL может указывать, что этот URL относится к пользователю с повышенными привилегиями).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...