Dej*_*jan 6 asp.net security asp.net-identity asp.net-core
我正在开发一个网络应用程序,我想知道UserId向客户端公开是否可能会造成安全漏洞。(UserId我指的是Id由身份框架创建并用作用户表的 PK 的身份用户对象。)
给出一些上下文或示例:在我的应用程序中,我需要区分登录用户发布的内容和其他人发布的内容。在一种天真的方法中,我只是将UserId内容与UserId当前经过身份验证的用户进行比较。但这意味着客户端可以看到所有相关用户的 ID。
我的直觉告诉我这不是一个好主意,但我无法确定原因。所以,我想知道是否有关于这个问题的指南。也许将接触的知识面减少到最低限度只是一般规则。
如果是这种情况,我该怎么办?散列有助于UserId解决问题还是有更好的方法?
编辑
我做的例子不是最好的,因为这个问题可以在后端轻松解决,方法是比较那里的用户ID,然后将内容发送到已经标记为“我的”或“其他人的”的客户端。但总体问题仍然存在。
如果用户 ID 本身就是敏感数据,例如,您的主键由于某种原因恰好是社会安全号码,那么这肯定会成为安全和隐私责任。如果您的用户 ID 只是自动递增数字,那么应该没问题。
最好在系统外部公开除主键之外的唯一标识符。它使您能够更灵活地解决数据混淆、处理数据迁移问题以及确保系统面向未来。
如果UID只是用户的标识符。了解用户的 UID 并不授予您与该用户关联的任何权限。在 URL 中共享 UID 与在 Github 上共享您的用户名或在 Stack Overflow 上共享您的唯一 ID 一样安全。
Stack Overflow 在其 URL 中显示用户 ID,以便进行用户个人资料查找:/sf/users/711098601/
无论如何,这取决于您的设计,您需要比我们考虑更多。