asp.net - 将 UserId 公开给客户端是否安全?

标签 asp.net security asp.net-core asp.net-identity

我正在开发一个网络应用程序,我想知道是否公开 UserId s 对客户端可能构成安全漏洞。 (通过UserId我指的是Identity Framework创建的Identity用户对象的Id,用作users表的PK。)

举一些上下文或示例:在我的应用程序中,我需要区分登录用户发布的内容和其他人发布的内容。以一种天真的方法,我只会比较 UserId内容的UserId当前经过身份验证的用户。但这意味着客户端会看到所有相关用户的 ID。

我的直觉告诉我这不是一个好主意,但我无法确定原因。所以,我想知道是否有关于这个问题的指导方针。也许这只是将知识面减少到最低限度的一般规则。

如果是这种情况,我应该如何进行?对 UserId 进行哈希处理帮助解决问题还是有更好的方法?

编辑

我做的例子并不是最好的,因为这个问题可以很容易地在后端解决,方法是比较那里的用户 ID,然后将内容发送到已经标记为“我的”或“其他人”的客户端。但是,普遍的问题仍然存在。

最佳答案

如果用户 ID 本身是敏感数据,例如,由于某种原因,您的主键碰巧是社会安全号码,那肯定是安全和隐私责任。如果您的用户 ID 只是自动递增的数字,那应该没问题。

最好在系统外公开主键以外的唯一标识符。它使您在解决数据混淆、处理数据迁移问题以及以其他方式适应 future 的系统方面具有更大的灵活性。

如果 UID 只是用户的标识符。知道用户的 UID 不会授予您与该用户关联的任何权限。在 URL 中共享 UID 与在 Github 上共享您的用户名或在 Stack Overflow 上共享您的唯一 ID 一样安全。

Stack Overflow 在其 URL 中显示用户 ID 以使用户配置文件查找工作:https://stackoverflow.com/users/10158551/xing-zou

无论如何,这取决于您的设计,您需要考虑的比我们多。

引用 Should I expose a user ID to public?

关于asp.net - 将 UserId 公开给客户端是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56914237/

相关文章:

asp.net-core - 如何使用 ASP.Net Core 3、SPA 应用程序对无效的 api 请求返回错误

c# - <FrameworkReference Include ="Microsoft.AspNetCore.App"/> 在.net core 3+ 中实际上是做什么的?

multithreading - 如何在 Linux (Kubernetes) 上解决 ASP.NET Core 中的线程不足问题?

c# - 在代码隐藏中获取文本区域

asp.net - 将 MVVM 应用于 ASP.NET

ASP.NET 虚拟路径映射到另一个不允许的应用程序

security - 您的连接仅在我的网站中不是私有(private)的(隐私错误)- 页面卡在安全页面中

javascript - knockout 在下拉菜单更改时填充字段

security - 如何添加自定义属性 x509 证书

javascript - 为什么 EcmaScript 5 严格模式会竭尽全力限制标识符 `eval`