到目前为止,在我的MVC应用程序中,每次我想要获取资源时,我都会在URI中包括数据库ID。

示例:想象一个应用程序有产品,其中一个产品的ID为1,我可以在uri products/1上访问产品详细信息

但是,考虑到ID可能会更改,这可能是一个问题。即使您认为id是主键并且不会更改,用户仍然可以知道1实际上是产品id,并且可以使用它来访问数据库。这可能会带来安全问题吗?
尽管如此,在uri和数据库的结构之间仍然存在依赖性。

(如何)我可以创建一个不依赖数据库的uri并仍然访问该资源?

最佳答案

只需将一个唯一字段添加到数据库表即可。查找数据时,请通过该字段而不是ID选择行。不,这确实不再安全,但是如果您愿意的话,很容易做到。有效的原因之一是使用漂亮的URL。

更新:

从本质上讲,在网站上放置任何功能都比不将其放置在网站上安全。您基本上是在问:“提供从Web引用我的数据库中特定项目的能力是否更不安全?”。答案是肯定的,但这并不意味着您不应该这样做。这意味着,如果要这样做,则需要小心并确保您的网站安全。是否知道尝试访问该资源的人就是他们声称的身份?如果可以,并且如果我们确定这意味着他们应该可以访问,那么我们可以说它是安全的。访问资源的能力是一项功能;不是安全漏洞。

09-15 23:21
查看更多