Chr*_*ris 0 database sql-server entity-framework-core azure-sql-database asp.net-core
也许这已经被问了很多,但我找不到关于它的全面帖子。
问:当你不想将 ids 从数据库传递到前端时,有什么选择?您不希望用户能够看到您的数据库中有多少记录。
到目前为止我发现/听到的:
问:你认识其他人或者你有这些方面的经验吗?有哪些性能和技术问题?如果您知道,请提供有关此主题的文档和博客文章。
两件事情:
id 的存在并不能告诉您有关数据库中有多少条记录的任何信息。即使 id 类似于10,也并不意味着只有 10 条记录;它很可能是创建的第十个。
以一种或另一种方式公开 id 与安全无关。ID 仅在它们所在的数据库表的上下文中有意义。因此,为了根据 ID 识别任何内容,用户必须直接访问您的数据库。如果是这种情况,那么您遇到的问题要比是否公开 id 的问题要多得多。
如果用户不应该能够访问某些 id,例如编辑页面,其中 id 作为 URL 的一部分传递,那么您可以通过行级访问策略来控制它,而不是通过混淆或尝试隐藏 id . 默默无闻的安全不是安全。
也就是说,如果您完全反对顺序 ID 的想法,那么请使用 GUID。使用 GUID 不会影响性能。它仍然是一个聚集索引,就像任何其他主键一样。显然,它们比 int 占用更多的空间,但我们谈论的是每个 id 12 个字节的差异——对于今天的存储来说,几乎没有什么可担心的。
| 归档时间: |
|
| 查看次数: |
308 次 |
| 最近记录: |