Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 聊天应用程序的Guid(随机整数)与常规整数主键_Database_Performance_Security_Primary Key_Guid - Fatal编程技术网

Database 聊天应用程序的Guid(随机整数)与常规整数主键

Database 聊天应用程序的Guid(随机整数)与常规整数主键,database,performance,security,primary-key,guid,Database,Performance,Security,Primary Key,Guid,我不是在问一个一般的“guid vs ints哪个更好”的问题。我知道,或者至少我认为我知道他们都有一个比另一个更好的特定场景。但我确实有一个特定的场景,我正在编写一个聊天应用程序。我启动应用程序时,所有主键都是int。但在做了一点研究之后,我意识到应用程序中可能存在安全漏洞,因为我正在将主键传递给用户的浏览器,以处理不同的实体请求,如聊天室、聊天室等。人们会同意,可以猜测随后的主键,因此用户可以更改其他用户的会话和状态。为了防止这种情况发生,我曾考虑使用guid作为主键,但后来又有了另一个想法

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

不,您不需要将主键更改为GUIDs。这不一定会给您带来任何额外的安全性,这是可以论证的

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


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

不,您不需要将主键更改为GUID。这不一定会给您带来任何额外的安全性,这是可以论证的

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


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

我认为GUID是一个int,尽管它的位数比大多数编程语言提供的整数和通常以十六进制形式表示的整数要多。您的问题的核心是在随机ID(例如uuidgen可能生成的ID)和顺序ID之间进行选择吗?如果是,为什么不这么说?@HighPerformanceMark…感谢您提供的信息,我本应该澄清一下…但我的意思是肯定的。我认为GUID是一个int,尽管它的位比大多数编程语言提供的整数和通常以十六进制形式表示的位多。您的问题的核心是在随机ID(例如uuidgen可能生成的ID)和顺序ID之间进行选择吗?如果是,为什么不这么说?@HighPerformanceMark…谢谢你提供的信息,我应该澄清一下…但是的,这就是我的意思。