Безопасность раскрытия идентификаторов документов для функциональности в стиле "любой, у кого есть ссылка, может просматривать" - PullRequest
0 голосов
/ 26 мая 2020

У меня есть конечная точка API, которую я использую для возврата некоторых данных из коллекции Cloud Firestore.

Данные, которые он возвращает, в основном нечувствительны, но они доступны для публичного вызова, поэтому я не использую auth для эта конечная точка. Я бы не хотел, чтобы коллекции отображались в списке, т.е. я хочу, чтобы они действовали как данные «любой, у кого есть ссылка, может просматривать».

Я ищу данные для документа подколлекции , поэтому в настоящее время вызов будет выглядеть примерно так:

GET endpoint.example/?parentDoc=XXXX0000XXXX&subDoc=XXXX0000XXXXX

Я подумывал о создании отдельной коллекции «ссылок» с UUID или чем-то еще, чтобы представить их два, в случае обнаружения такие идентификаторы документов считаются плохой практикой (?) - например,

GET endpoint.example/?myOwnRef=123-234-123-234-ABC-DEF

Предполагая, что у меня есть Firestore, заблокированный соответствующими правилами безопасности, можно ли предположить, что только выгода, которую я бы получил от дальнейшего хеширования / создания моей собственной (например, UUID) ссылки для родительского do c / subcollection do c is security by obscurity ?

... Или есть больше заслуг в дальнейшем сокрытии идентификаторов здесь, если мне нужна функция стиля частных / общих ссылок для ссылки на данные?

EDIT: как Doug Stevenson указал, т его вопрос относится к автоматически созданным идентификаторам документов Firestore.

1 Ответ

1 голос
/ 26 мая 2020

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

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

...