Подтвердить что ты не робот

Я подвергаю конфиденциальные данные, если я установил идентификатор bson в URL?

Скажем, у меня есть массив Products в моем Mongodb. Я хочу, чтобы пользователи могли видеть каждый продукт на своей странице: http://www.mysite.com/product/12345/Widget-Wodget. Поскольку у каждого продукта нет инкрементного целочисленного идентификатора (12345), но вместо этого он имеет идентификатор BSON (5063a36bdeb13f7505000630), мне нужно будет либо добавить идентификатор целого числа, либо использовать идентификатор BSON.

Так как идентификатор BSON включает PID:

  • 4-байтная метка времени,
  • 3-байтовый идентификатор машины,
  • 2-байтовый идентификатор процесса,
  • 3-байтовый счетчик.

Я предоставляю защищенную информацию внешнему миру, если я использую идентификатор BSON в своем URL-адресе?

4b9b3361

Ответ 1

Я не могу думать о том, чтобы использовать привилегии на ваших машинах, однако использование ObjectIds везде раскрывает много информации. Тем не менее.

При сканировании вашего сайта можно:

  • найдите некоторые скрытые объекты: например, если часть счетчика идет от 0x.... b1 до 0x.... b9 между моментами t1 и t2, можно догадаться ObjectIds внутри этих инверсий. Тем не менее, угадывание идентификаторов наиболее вероятно бесполезно, если вы выполняете права доступа
  • знать дату регистрации каждого пользователя (не очень чувствительная информация, но лучше, чем ничего)
  • вывести фактические (в отличие от общедоступных) рабочие часы с временными отметками объектов, созданных персоналом.
  • вывод, в течение которого ваша аудитория живет от временных меток создаваемых пользователем объектов: если ваш сайт является тем, что люди используют в основном в обеденное время, тогда можно измерить пики ObjectIds и вывести, что пик в 8 вечера UTC означает аудиторию был на западном побережье США.
  • и в более общем плане, сканируя большую часть вашего веб-сайта, можно построить график успеха вашего сервиса, имея для любого определенного времени знания: количество пользователей, уровни взаимодействия с пользователем, количество серверов, которые у вас есть, как часто ваши серверы перезапускаются. ПИД-изменения, происходящие в выходные дни, скорее всего, сбой, тогда как в рабочие дни более вероятны сбои + версии программного обеспечения.
  • и, возможно, найти другую информацию, относящуюся к вашим бизнес-процессам и домену.

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

Ответ 2

Обмен информацией в ObjectID не поставит под угрозу вашу безопасность. Кто-то может сделать вывод о небольших деталях, например, когда был создан ObjectID (временная метка), но ни один из компонентов ObjectID не должен быть привязан к аутентификации или авторизации.

Если вы строите сайт электронной коммерции, SEO, как правило, является серьезным соображением для общедоступных URL-адресов. В этом случае вы обычно хотите использовать более дружественный URL-адрес с более короткими и более семантическими компонентами пути, чем ObjectID.

Обратите внимание, что вам не нужно использовать ObjectID по умолчанию для поля _id, поэтому он всегда может генерировать что-то более актуальное для вашего приложения. Объектный идентификатор по умолчанию обеспечивает разумную гарантию уникальности, поэтому, если вы реализуете собственное распределение _id, вам придется принять это во внимание.

См. также:

Ответ 3

Как сказал @Stennie, на самом деле.

Начнем с pid, большинство хакеров не потрудились бы искать pid, скажем Linux, вместо этого они просто сделали бы:

ps aux | grep mongod

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

Идентификатор машины - это еще один бит данных, который бесполезен публично, и, честно говоря, они лучше понимают вашу сеть, используя ping или digg, чем они были бы через единственный идентификатор машины.

Итак, чтобы ответить на вопрос: Нет, нет реальной угрозы безопасности, и информация, которую вы показываете, бесполезна для всех, кроме MongoDB.

Я также согласен с @Stennie в использовании дружественных URL-адресов для SEO, примером, который я обычно использую для электронной коммерции, является /product/product_title_ с меньшим случайным идентификатором (может быть, base 64 encode the _id) или автоматически увеличивающимся id с .html на конце.