socket.emit() 是一种将信息传输到服务器的安全方法吗?

Posted

技术标签:

【中文标题】socket.emit() 是一种将信息传输到服务器的安全方法吗?【英文标题】:Is socket.emit() a safe and secure method to transfer information to the server? 【发布时间】:2020-05-01 21:06:48 【问题描述】:

我正在开发一个使用 socket.io、express-js、node-js 和 react-js 的应用程序。阅读this 后,我绝对希望尽可能保持安全,并牢记最佳性能。我正在考虑使用 socket.io 使用 socket.emit 从客户端向服务器发送信息(登录详细信息)。主要关注的是这些细节是否能够被外部(第三方)嗅探(看到)。不仅如此,如果这种方法不是一个好主意,那么实现安全性和维护最少的后端工作(服务器负载)的最佳选择是什么。使用 HTTPS 时,cookie(快速会话 cookie)是否安全? (注意每个问题都适用于正在实施的 HTTPS)。感谢您的帮助。

【问题讨论】:

【参考方案1】:

您需要对任何用户输入(如用户名、密码等)进行服务器端验证。任何中间人 (MITM) 攻击都将由 HTTPS 处理(只要确保您使用的是最新的 SSL/ TLS 版本)。这些嗅探攻击很难执行,需要有人在您的网络中。要使 cookie 安全,请使用“仅 HTTP”和“安全”cookie 标志。 您可以在此处阅读有关数据验证的更多信息 - https://www.owasp.org/index.php/Data_Validation。 有关 cookie 标志的更多信息 - https://resources.infosecinstitute.com/securing-cookies-httponly-secure-flags/

还有一件事是确保您通过代码对任何数据库事务使用参数化查询以避免 SQL 注入。

我希望这会有所帮助。

【讨论】:

这是部分答案,但仍有帮助。 我不认为 emit() 函数不安全。您已经在使用 HTTPS,因此通道将被加密。如果您想知道具体的事情,请告诉我。

以上是关于socket.emit() 是一种将信息传输到服务器的安全方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 到 C++ 客户端:未从 socket.emit 接收消息

我可以通过 socket.emit 发送多少数据?

我可以通过socket.emit发送多少数据?

Socket.emit 带来多个值

Java序列化算法

将信息从数据库传输到 JTable