0

我不是在问一般的“guid vs ints哪个更好”的问题。我知道,或者至少认为我知道他们都有特定的场景,其中一个比另一个更好。但是我确实有一个特定的场景,我正在编写一个聊天应用程序。我启动应用程序时所有主键都是整数。但是在做了一些研究之后,我意识到我可能在应用程序中存在安全漏洞,因为我正在将主键传递给用户的浏览器以获取不同的实体请求,例如聊天室、谈话者等。人们会同意可以猜测后续主键,因此用户可以更改其他用户的会话和状态。为了防止这种情况,我正在考虑使用 guid 作为我的主键,但后来另一个想法让我想到了。关于性能的思考。由于这是一个聊天应用程序,如果应用程序承受重负载(例如同时有 10 或 100 多个用户同时使用),那么使用 guid 真的会降低我的性能,例如,我没有足够的信息来在这里做出选择。简而言之,我的问题是,我是否需要将主键更改为 guid 以帮助更难猜测主键,或者是否有其他方法可以在不求助于 guid 的情况下保护我的应用程序。如果问题不够清楚,请告诉我,我会澄清,谢谢。我是否需要将我的主键更改为 guid 以帮助更难猜测主键,或者是否有其他方法可以在不求助于 guid 的情况下保护我的应用程序。如果问题不够清楚,请告诉我,我会澄清,谢谢。我是否需要将我的主键更改为 guid 以帮助更难猜测主键,或者是否有其他方法可以在不求助于 guid 的情况下保护我的应用程序。如果问题不够清楚,请告诉我,我会澄清,谢谢。

4

1 回答 1

4

不,您不需要将主键更改为 GUID。这不一定会给您任何额外的安全性,并且可以说是默默无闻的安全性

使用 GUID 使攻击者无法猜测另一个用户的 ID 或聊天室的唯一密钥。但是,如果它们被传输,它不会阻止他们看到 ID,然后能够执行您当前担心的任何操作。

相反,当用户对数据库发出请求时,您必须验证他们是否被允许访问该数据。例如,他们应该只能检索自己的用户信息,或其他用户的基本用户信息(如句柄,但不能检索电子邮件地址)。

于 2013-01-12T01:28:25.187 回答