我正在设计一个与MongoDB交互的API。
现在的问题是,如果安全使用原始ObjectID来查询对象等。在直接使用OID时会出现任何安全问题(例如在查询中),或者我应该加密/在离开我的服务器环境之前对它们进行解密?
答案 0 :(得分:10)
查看BSON对象ID规范here,您将知道是否可以安全使用。
如果你试图保护用户从脚本(fuskators)发送不同的URL,那么对我来说它似乎安全性较弱。不会有太多'机器','pid'部分组合。 'time'部分可以计算攻击者是否可以了解数据是如何插入的(特别是如果使用批处理)。 'inc' - 非常弱。
我不会相信ObjectID是唯一的安全措施。
请注意,对于“一般来说是否安全”这个问题,无法找到正确的答案。你必须自己决定。
PS。但请记住,当用户共享他们访问过的网址时,这种基于URL的安全性将会陷入困境。即使是最好的加密也无济于事。
答案 1 :(得分:2)
我认为,如果您不共享对象ID,那么安全性并不会太长,因为可能会发现安全问题的攻击者也可能使用暴力攻击或其他方式来获取对象IDS。
最终this question也可以为您提供帮助。