如何离线管理GUID

时间:2018-06-29 09:08:23

标签: security synchronization offline guid

考虑到clients can tamper with GUIDs如果它们是在客户端生成的,想知道如果允许脱机工作该如何缓解这个问题。

假设您有一个待办事项列表应用程序,并且正在脱机工作。根据我的想法,当您创建待办事项时,客户端正在为待办事项以及任何附件或相关记录创建GUID。然后说您返回在线并同步。在客户端上创建的GUID可能已被篡改,因此在合并期间可能需要进行某些操作。也许所有新的GUID都是在服务器端创建的,然后发送回客户端以覆盖客户端生成的GUID。不确定。

想知道这里有什么最佳实践。

1 个答案:

答案 0 :(得分:1)

我认为是,将ID发送到服务器时可以重新分配ID。可以做到这一点的一种方法是拥有一个客户端ID和一个服务器ID,只有在保存时才分配后者。然后,也可以从设计中删除客户端ID,但成功保存后,必须更新所有引用。

然后问题是不可避免的不一致,因为如果服务器已经收到更新,并分配了服务器端ID,但是确认响应从未将更新返回给客户端,会发生什么情况。在下一次下载时,客户端将在服务器上看到一个新项目,它不能与任何客户端项目相关联,除非存在某种启发式方法来识别重复项(例如,如果客户端项目中的所有字段都相同)没有服务器端ID,则很有可能是相同的。

我认为这不是一个安全性问题,如果id的格式经过验证(例如,它必须是一个guid,即数字,字母和破折号),那么客户端到底到底是什么并不重要发送。因此,从安全角度来看,这几乎纯粹是一个输入验证问题,当然必须存在输入验证问题,必须对已经存在的id抛出错误,依此类推。然后,它也涉及访问控制,如果多个用户正在使用该应用程序,但这是不同的主题,则无论如何都必须授权任何访问,并且访问控制决不能仅在id上做出。也就是说,如果您可以访问您知道其ID的任何内容,则它不是一个好的访问控制模型。