【发布时间】:2020-12-23 20:19:00
【问题描述】:
我目前正在开发一个 Web 应用程序,并想在其中引入一些基本的安全措施。在这种情况下,我正在调查 socket.io 用来处理用户会话的普通方法是否安全。从this article 我发现socket.io 收到的每个连接都会生成一个ID(即使它只是一个新的浏览器选项卡)。我想这可以看作是一个非常基本的会话 ID。现在我的问题是,这个 ID 是如何生成的,它是否足够随机以确保没有人可以通过猜测(无论是通过暴力破解还是某些统计数据)这样的活跃用户 ID 来劫持会话?
正如一些人要求澄清的那样:我试图避免攻击者劫持会话。这是因为攻击者可以轻松地暴力破解会话 ID,使用一些统计信息猜测它,因为它不够随机,或者能够使用网络嗅探/XSS 窃取它来窃取它存储的 cookie。
【问题讨论】:
-
“一些基本的安全措施”非常通用。你到底想做什么,你想保护什么?
-
添加说明。
-
为了再次保护网络嗅探,您必须使用 HTTPS。这对于整个传输来说是通用的,而不仅仅是 socket.io。
-
是的,我确保使用 HTTPS。关于 XSS,我还验证了 cookie 使用了 HttpOnly 标志。