到目前为止,在我的MVC应用程序中,每次我想获取资源时,我都会在URI中包含数据库ID。
示例:想象一个拥有产品的应用程序,其中一个产品的ID为1,我可以访问uri上的产品详细信息products/1
然而,这可能是一个问题,想象id可能会改变。即使您认为id是主键并且它不会改变,用户仍然可以获得1实际上是产品ID的知识,并且它用于访问数据库。这可能会出现安全问题吗? 尽管如此,uri与数据库结构之间存在依赖关系。
(如何)我可以创建一个不依赖数据库且仍然访问该资源的uri?
答案 0 :(得分:1)
只需将一个关键字段添加到DB表中即可。查找数据时,按该字段而不是ID选择行。不,这确实不是更安全,但如果您愿意,这很容易做到。执行此操作的一个原因是有效的URL。
更新:
在网站上放置任何功能本身就不如放在那里的安全性。您基本上是在问:'提供从网络引用我的数据库中特定项目的能力是否不太安全?'。答案是肯定的,但这并不意味着你不应该这样做。这意味着如果你想这样做,你需要小心并确保你的网站是安全的。是否知道尝试访问该资源的人是他们声称的人?如果确实如此,如果我们决定这意味着他们应该获得访问权限,那么我们可以说它是安全的。访问资源的能力是一项功能;不是安全漏洞。