在我的教育中,我被告知将真实的主键(不仅是DB密钥,而且是所有主访问器)公开给用户,这是一个错误的想法。
我一直认为这是一个安全问题(因为攻击者可能会尝试读取自己的东西,而不是自己的东西)。
现在,我必须检查是否无论如何都允许用户访问,所以背后有其他原因吗?
另外,由于我的用户无论如何都必须访问数据,因此我需要在两者之间的某个外部世界拥有一个公共密钥。现在,公用密钥与主密钥存在相同的问题,不是吗?
人们一直要求有一个示例说明为什么仍然要这样做,所以这里是一个。请记住,这个问题不仅涉及原理本身,而且要在本示例中应用。明确欢迎解决其他情况的答案。
处理活动的应用程序(Web,移动设备)具有多个UI和至少一个用于系统间通信的自动API(例如,会计部门希望根据已完成的操作向客户收取多少费用)。该应用程序有多个客户,因此必须将其数据分开(从逻辑上讲,数据存储在同一数据库中)。无论如何,都会检查每个请求的有效性。
活动是非常精细的,因此它在某个容器对象中在一起,可以称之为“任务”。
三个用例:
- 用户A希望将用户B发送给某个任务,因此他向他发送了一个链接(HTTP)以在其中完成一些活动。
- 用户B必须走出建筑物,以便他在移动设备上打开任务。
- 会计部门希望向客户收取该任务的费用,但使用第三方会计系统,该系统通过引用REST-API的某些代码自动加载任务/活动
每个用例都要求(或变得更加容易)代理为任务和活动提供一些可寻址的标识符。
ON UPDATE CASCADE
是为此而创建的(特定于MySQL?),尽管如果问题是安全性,则访问检查应该在后端,并且无论如何都不信任用户