c# - 避免 Uris 上的数据库信息

标签 c# model-view-controller uri

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

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

上的产品详细信息>

然而,这可能是一个问题,想象 id 可能会改变。即使你争辩说 id 是主键并且它不会改变,用户仍然可以知道 1 实际上是产品 id 并且它用于访问数据库。这可能会带来安全问题吗? 尽管如此,uri 与数据库的结构之间存在依赖关系。

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

最佳答案

只需在数据库表中添加一个唯一的键字段。当您查找数据时,通过该字段而不是 ID 选择您的行。不,这实际上并没有更安全,但如果您愿意,这很容易做到。这样做的一个有效原因是为了漂亮的 URL。

更新:

将任何功能放在网站上本质上不如不放在网站上安全。您基本上是在问,“提供从网络引用我的数据库中特定项目的能力是否不太安全?”。答案是肯定的,但这并不意味着你不应该这样做。这意味着如果你想这样做,你需要小心并确保你的网站是安全的。它知道试图访问该资源的人就是他们声称的那个人吗?如果确实如此,并且如果我们决定这意味着他们应该获得访问权限,那么我们可以说它是安全的。访问资源的能力是一个特性;不是安全漏洞。

关于c# - 避免 Uris 上的数据库信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22057315/

相关文章:

c# - Windows 窗体 : How to make the Form and a Grid Change Sizes Together?

Release模式下的 C# 互斥量与 Debug模式下的行为不同

asp.net-mvc - 显示用户全名而不是用户名

c# - 如何在下拉列表mvc中设置选定的值

java - 3 Swing 应用程序设计 : which is the best?

android - 我们可以在短信中传递 Uri 而不是 Android 中的超链接吗

c# - 后台传输服务/请求

c# - 如何调试代码分析自定义规则?

sql - Android 记事本 Uri 解释

android - 广播 data_sms_received 端口