增强 now.js/socket.io 聊天的安全性

2024-01-07

与聊天nowjs http://nowjs.org or 套接字.io http://socket.io/是您可以用它们进行的最简单的练习之一。我想使用 nowjs 的 Group 对象实现多房间聊天(具有非固定数量的房间和登录用户)。

我还没有直接使用过 WebSockets,我想知道其中存在哪些安全问题。例如,我需要多久检查一次身份验证?

攻击者是否有可能“劫持”socket.io 连接?我该如何阻止它?

还有哪些其他安全陷阱需要关注?


中间人当然是一个考虑因素。不过,最大的安全问题是 XSS。

这个有用的SO线程 https://stackoverflow.com/questions/7450445/socket-io-security-issues建议:

  1. socket.io 0.8 内置了引荐来源网址验证
  2. 如果聊天来源已知,则在防火墙处阻止多余的连接

这篇内容非常丰富的文章 http://blog.kotowicz.net/2011/03/html5-websockets-security-new-tool-for.html建议:

  1. 不要相信客户
  2. 使用 SSL 加密
  3. 检查原产地
  4. 防止 XSS(清理客户端输入!)
  5. 不要假设它是浏览器

这个有用的线程 https://stackoverflow.com/questions/6599470/node-js-socket-io-with-ssl表示在 socket.io.connect(...) 上设置 secure:true

我建议采纳所有这些建议:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

增强 now.js/socket.io 聊天的安全性 的相关文章

随机推荐

  • 将键值列表转换为数据框

    我在 R 中有一个名为 国家 的键 值列表 print country CAM 1 5 TJK 1 1 SEN 1 7 键是一个国家的名称和该国家出现的值 我想将此列表转换为数据框 如下所示 country occurence 0 CAM
  • 为 Django Oscar 存储信用/虚拟货币应用程序?

    我希望为存储虚拟货币的客户建立一个商店信用模型 此商店信用应用程序将存储可用于支付产品费用的积分 在退货或某些方案中添加 是django oscar 账户 https github com django oscar django oscar
  • Delphi7 WCF方法输入参数

    我有 wcf web 服务 basicHttpBinding 我们的Delphi7客户端无法正确使用它 我已经使用 WCF 附加功能简化了 WSDL 好的 Delphi7 wsdl 导入器生成代理正确 现在我遇到了输入参数的问题 它们总是有
  • HTTP 404 与 Ajax.ActionLink

    我无法解决 404 错误 Global asax cs 中的默认路由 routes MapRoute Default controller action id new controller Home action Index id UrlP
  • SQL 或 LINQ:如何选择仅一个参数发生变化的记录?

    假设我们有这个列表 Id IdRef myColumn anotherColumn 448 70 1 228 449 70 1 2s8 451 70 1 228 455 70 2 2a8 456 70 2 s28 457 70 2 28 4
  • 匹配嵌套大括号的正则表达式

    我需要正则表达式来匹配正确的大括号 例如每个开一闭一abc abc bc xyz 我需要它 从中获取一切 abc bc xyz 没有得到 abc bc 我尝试使用 这对于正则表达式来说是不可能的 为此需要上下文无关语法 并且正则表达式仅适用
  • 检测图像是否像素化的最佳方法是什么?

    我试图判断图像是否像素化 我试图使用拉普拉斯方差方法来执行此操作 但我不确定它是否正常工作 因为使用我的代码返回的图像非常扭曲 像素化 方差非常高 为 1011 import sys import cv2 import imutils as
  • 比较列表中除您自己之外的项目

    我想比较列表中的项目 但不希望将其与其自身进行比较 我怎么做 我的代码 var students new List
  • 缺少对 verify(mock) 的方法调用,但有一个吗?

    介绍 我正在尝试进行一个测试来验证 使用 Mockito v1 9 5 的verify 一个带有签名的方法deinit 在界面中Bar在执行传递后调用Foo deinit 我遇到了一个我真的不明白的错误 这是FooTest java我正在尝
  • 在分支中应用补丁

    我收到了来自贡献者的补丁 显然 他在后备箱中制作了补丁 但是 我想将他的更改提交到一个新分支 我可以知道如何通过 Tortoise Hg 做到这一点吗 下面的说明假设您希望将补丁隔离在named branch 使用命令行 可以轻松地将补丁应
  • JAX-RS访问控制

    有人可以为我提供一些有关 JAX R Web 服务中的访问控制的指示吗 例如根据用户凭据 名称或任何其他标准限制访问 在sun手册中找不到任何有用的信息 提前致谢 阿迪尔 我个人使用 Spring security 来完成此任务 Sprin
  • 覆盖 Python cmd 模块中未记录的帮助区域

    我正在使用 Python 的 cmd 模块构建一个小型 CLI 工具 我不喜欢显示列出的未记录的命令 因此 当我输入 帮助 时 我只想显示记录的命令 当前输入帮助显示 Documented commands type help
  • 使用 LINQ 过滤集合

    假设我们有一个 Person 对象的集合 class Person public string PersonName get set public string PersonAddress get set 以及代码定义集合中的某处 List
  • 从命令行使用 git 属性

    我的仓库中有这样的配置 echo java diff java gt gt gitattributes 当我这样做时git diff 我得到了预期的结果 不过 我正在编写一个脚本来分析其他 git 存储库 所以我通常会这样做 git git
  • Vaadin 会话管理 - 它是如何工作的?

    在工作中 我们使用 Vaadin 开发一个 Web 应用程序 我是一位相当高级的 Java 程序员 我对 Vaadin 也有经验 但现在我已经到了需要将信息存储在用户会话中的地步 区域设置 用户名等属性 In the Vaadin 文档 h
  • Django Auth LDAP - 使用 sAMAccountName 直接绑定

    有两种方法可以使用 Django Auth LDAP 对用户进行身份验证 搜索 绑定和 直接绑定 第一个涉及匿名或使用固定帐户连接到 LDAP 服务器并搜索身份验证用户的可分辨名称 然后我们可以尝试再次使用用户的密码进行绑定 第二种方法是从
  • 自动判断用户定义函数是否与隐式函数等价

    有时 用户实现的函数具有与其隐式定义版本相同的功能 例如 复制构造函数只调用其所有成员的复制构造函数 struct A int B A const A a B a B 这是不希望的 因为它会导致额外的维护 例如 如果类成员被重命名 重新排序
  • $.clone 和 .cloneNode

    我对 jQuery 之间的区别有点困惑 clone和原始的 cloneNode财产 如果我在做 blah cloneNode true 这将在 jQuery 空间之外创建一个全局对象 If I use blah clone true 这将在
  • 允许 foreach 工作人员注册并将子任务分配给其他工作人员

    我有一个 R 代码 其中涉及多个 foreach 工作人员来并行执行一些任务 我正在使用 foreach 和 doMC 来实现此目的 我想让每个 foreach 工作人员招募一些新工作人员 并将其代码的某些部分 可并行 分发给他们 当前的代
  • 增强 now.js/socket.io 聊天的安全性

    与聊天nowjs http nowjs org or 套接字 io http socket io 是您可以用它们进行的最简单的练习之一 我想使用 nowjs 的 Group 对象实现多房间聊天 具有非固定数量的房间和登录用户 我还没有直接使