gpt4 book ai didi

javascript - 具有共享 session 和用户身份验证的 WebSockets 和 HTTP 安全性

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:31 24 4
gpt4 key购买 nike

因此,我正在考虑制作一个图形聊天应用程序/网站(用户坐在 2D 头像的房间里聊天),从我迄今为止所做的所有研究(很多!)来看,LAMP 堆栈似乎适合我的大部分网站,并使用一些 node.js 和 websocket 协议(protocol)来处理发送的实际聊天数据(用户消息等)。我对于创建这种范围的任何东西都没有丰富的经验(我更习惯于前端工作),但到目前为止这是一个有趣的挑战!

我的问题是,我似乎找不到很多有关验证用户信息的信息。我读到 websockets 本质上是相当不安全的,最好验证发送的数据的来源......

不过,我担心的是用户的实际身份。如果我使用Javascript发起套接字连接,如何防止用户“欺骗”任何信息?是否可以将用户的 PHP session 数据连接到处理 websocket 连接的服务器,这样 Javascript 就不会处理除实际消息文本之外的任何内容?

例如,如果我以“Kris”身份登录并发送消息“Hello!”或者更改我的头像图像,我只希望客户端处理“Hello”或头像图像 URL,并保留所有其他信息来回传递,例如服务器端的用户名,以防止任何人弄乱客户端代码。

最佳答案

问题很宽泛,除了缺乏知识和经验之外,不涉及任何具体挑战。

虽然我仍然会评论一些可能对您有用的观点:

  1. WebSocket 安全性与 HTTP 请求安全性相同 - 这取决于您的应用程序。
  2. 需要粘性 session 来识别和保留来自不同进程/服务器的 session 。如果您决定使用 LAMP(我建议不要这样做),那么您确实需要 PHP 和 Node.js 进程之间的粘性 session 。
  3. WebSockets 在连接(握手)期间使用一些额外和正常的 cookie 数据执行正常的 HTTP 请求。它可以在服务器端用于恢复 session 并将客户端套接字与该 session 相关联。一旦套接字断开连接,它就必须失去这种关系。
  4. 使用 HTTP 请求或 WebSocket 恢复 session 在安全性方面几乎相同,因为 WebSocket 实际上是在 session 恢复后才出现的。
  5. 多个技术堆栈可能会导致通过 Apache 代理 Node.js 在同一域中工作的复杂性。对于您所描述的应用程序,我认为不需要这种老式+现代堆栈混合。你可以纯粹使用node.js,前面加上nginx来提供静态文件。这将更容易使用,并且您的代码语言将在整个项目中更加持久,并且更易于维护。
  6. 使用 Node.js 更容易创建 RESTful,因此它又会节省时间。如果您愿意,您的 Node.js 也可以直接重用 RESTful API 背后的实际逻辑来获取 socket.io 的数据。
  7. 在通信方面,您需要服务器<>客户端权威政治。客户端仅“询问”,服务器根据其认为是对还是错做出决定。这应该是安全方面的第一条规则。客户是否会做出允许其他人进行黑客攻击和作弊的决定。

再说一次 - 这太宽泛了,而且是非常“讨论”风格的问题,而不是一个具体的挑战。

关于javascript - 具有共享 session 和用户身份验证的 WebSockets 和 HTTP 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21857210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com