是否总是需要隐藏用户的mysql生成的id?

时间:2011-11-23 12:02:13

标签: php mysql security auto-increment

向用户显示实际ID(由数据库自动递增)是否存在安全风险?你能举出一些人们用它做什么危险的实际例子吗?

4 个答案:

答案 0 :(得分:5)

不,它在许多情况下使用。

如果您的网站以其他方式易受攻击,例如SQL注入或XSS,他们可能会将id用于有害的内容。但从来没有单独的id。

只需在此处查看您的个人资料,您的ID为 243414

答案 1 :(得分:3)

我不知道有任何理由将行id暴露给用户本身就是不安全的。几乎所有的Web框架都会在某些时候执行此操作。

使用递增整数id公开一些有关基础数据的信息。最重要的是,它们通常是顺序的,因此潜在的攻击者可以预测可能有效的ID。但是,如果您允许用户从您的应用中请求他可能无权查看的ID的数据,那么您的应用可能存在更大的安全问题。如果您正确地限制访问,或者不需要限制对记录数据的访问,那么暴露id不会造成太大(如果有)风险。

答案 2 :(得分:2)

单独并不危险。

如果您的系统有任何漏洞利用ID可以帮助他们

但不要忘记,如果您的系统容易受到任何信息的危害,那么id会让它变得更容易

答案 3 :(得分:0)

有时可能是悲剧

假设我在您的应用程序上有个人资料,我在该个人资料上有我的照片 当我删除其中一个时,链接就像这样

http://www.yourapp.com/myprofile/pictures/delete_pic.php?id=5

这是我的照片 想象pic 19不是我的

http://www.yourapp.com/myprofile/pictures/delete_pic.php?id=19

这里我将删除其他用户的图片 如果您需要向用户显示此类ID,请在显示时对其进行加密,并在使用时对其进行解密 你可以用

base64_encode() & base64_decode()

但这很简单,可以获得你可以制作自己的算法或做一些事情来生成base64的不同输出,如

base64_encode($id+7); or loops