我有一个简单的消息系统。用PHP,MySQL和Java编写的代码将被实现。现在我想确保收件人的ID。目前我使用用户表的自动增量主键(1,2,3)。但这当然是不安全的。因为每个人都可以通过从1到xxx的计数来猜测所有其他ID。那么什么是最好的业务实践来保护身份。在MD5中转换它(可能有一些密文短语“myencryptionkey”+ userId - > MD5)? 如果收件人ID易于复制,垃圾邮件发送者将使用此系统。
我认为这是一个普遍的问题。以及“友谊邀请”。如果每个人都能猜到,ids是如何构建的,你可以发送大量的友情邀请函。
另一个想法: 关于使用随机创建的密钥加密userIds的问题。我生成一个随机密钥,将它存储在会话cookie中。所以每个人都有一个用户123的其他标识符。所以我需要一个函数来加密和解密给定的整数。
像facebook这样的网页如何保护他们的主键?
答案 0 :(得分:1)
ID通常是可预测的。这不是问题。
通过使它们不可预测,你基本上使ID成为秘密。谁知道秘密有权访问。这称为security by obscurity,并且根本不是 。
如果要限制访问权限,则应该采取一些访问控制措施。例如,让人们根据用户ID /角色登录并提供查看权限。
答案 1 :(得分:0)
我只看到问题,如果你的系统有漏洞允许人们利用你的标识符,虽然我理解了这个问题并且它偶尔会在我脑海中浮现,因此我可能会建议,尽管不一定是支持者,为每个唯一键使用GUID
。
这些可以在插入记录时自动生成,并根除可猜测因子。
我会说,与整数相比,它们也会显着扩大尺寸 - 这有问题取决于系统的规模和其他区域。