公开文档 ID 以实现"anyone with the link can view"样式功能的安全性



我有一个API端点,用于从Cloud Firestore集合返回一些数据。

它返回的数据在很大程度上是不敏感的,但它是可公开调用的,所以我没有对此端点使用 auth。我不希望集合是可列出的,即我希望它表现得像"任何有链接的人都可以查看"数据。

我正在查找子集合文档的数据,因此目前的调用如下所示:

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

我正在考虑创建一个单独的"引用"集合,其中包含 UUID 或其他东西来表示两者,以防像这样显示文档 ID 被认为是一种不好的做法(?

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

假设我使用适当的安全规则锁定了 Firestore,是否可以安全地假设我从进一步散列/为父文档/子集合文档创建自己的(例如 UUID(引用中获得的唯一好处是隐蔽的安全性?

。或者,如果我追求私有/可共享的链接样式功能来引用数据,那么在这里进一步隐藏 ID 是否有更多优点?

编辑:正如Doug Stevenson指出的那样,这个问题指的是自动生成的Firestore文档ID。

这取决于您的文档 ID 是否实际包含任何数据。 如果它们只是随机生成的,那么良好的安全规则应该足以防止某人在知道 ID 的情况下对文档执行他们不应该做的事情。 散列它没有任何优势,因为它已经是一个不透明的值。

如果 ID 确实包含一些数据,那么您正在将这些数据交到可能会对它做一些您不喜欢的事情的人手中,您可能希望通过散列将其从视图中删除。

相关内容

最新更新