Socket.io 清理传入数据 (xss)

2023-12-22

我在expressjs 3中使用socket.io。我想用express-validator清理传入的消息。我有这个代码:

var expressValidator = require('express-validator')
, sanitize = require('express-validator').sanitize;

socket.on('chat', function (data) {
    io.sockets.in('test').emit('chat', {
            user: sh.session.user,
            message: data.message,
            time: new Date()
    });
});

我该如何使用sanitize(data.message).xss?因为这是行不通的。


在这种情况下你想使用validator代替express-validator。首先通过 npm 安装它:

npm install validator

然后以几乎相同的方式使用它:

var sanitize = require('validator').sanitize;

// later on
message = sanitize(data.message).xss()

这样做的原因是因为express-validator用于当您处理通过expressjs的HTTP请求时。对于 Websockets,您不会通过expressjs,而只是侦听与它相同的端口。因此,express-validator 实际上并不“存在”在 Websocket 数据事件的上下文中。

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

Socket.io 清理传入数据 (xss) 的相关文章

随机推荐

  • iOS9 更新 AFNetworking 调用以使用 HTTPS 的正确方法是什么(错误 -1200、-9824)?

    我正在从 iOS 8 切换到 iOS 9 之前通过 HTTPS 进行的 AFNetworking Web 服务调用不再有效 我越来越error 1200 and error 9824该问题与使用自签名证书有关 错误域 kCFErrorDom
  • RoundUp - AngularJS

    我正在使用以下代码来尝试和总结在角度 总体上有效 但是小于 0 5 的数字四舍五入为 0 我想round up每个数字到下一个整数 例如 0 02 应四舍五入为 1 data Virtual SumCores data Physical S
  • Java 返回错误“无法实例化类型”[重复]

    这个问题在这里已经有答案了 当我尝试初始化新对象时收到此错误消息 Cannot instantiate the type Car My code 主程序 java public class Main public static void m
  • Pex 和 Moles 项目还活跃吗?

    他们过去每月发布两个新版本 但自 2010 年 10 月以来 他们没有发布新版本 我发现了this http social msdn microsoft com Forums en pex thread e59d72ae 29fd 4251
  • 如何在交互式变基期间取消暂存文件(从旧提交中删除文件)?

    我读过Pro Git关于交互式变基以更改多个提交的书 所以我正在做git rebase HEAD 3 改了我想修改的一项edit 然后我可以通过更改消息git commit amend 并通过添加一个文件git add file3之后git
  • 打印和格式化字符串文字有什么区别?

    当我们可以使用第 8 行和第 9 行代码时 使用代码有什么意义print比如10号线 my name Zed A Shaw my age 35 my height 74 my weight 180 my eyes Blue my teeth
  • 如果我将数组初始化为大小 0 会发生什么?

    假设我有一个类似的函数 void myFunc List
  • AJAX 响应时间

    如何计算 AJAX 响应时间 我在脚本中需要这个 因为我得到服务器时间戳 但如果请求花费超过 1 秒 我需要在时间戳上添加 1 秒 您需要获取开始时间 就在 AJAX 请求完成之前 然后获取脚本完成时的结束时间 然后您可以计算出差异 如果大
  • pySerial 2.6:在 readline() 中指定行尾

    我正在使用 pySerial 向 Eddie 发送命令 我需要在我的阅读行中指定回车符 但 pySerial 2 6 去掉了它 有解决方法吗 这里有艾迪命令集 https www parallax com sites default fil
  • Spring data jpa,外部化本机查询

    我正在使用 Spring data jpa 来执行本机查询 这是示例 Query value select name from customer nativeQuery true public List
  • 播放 iOS 时从 HLS 流(视频)中提取/录制音频

    我正在使用 AVPlayer 播放 HLS 流 当用户按下录制按钮时 我还需要录制这些流 我使用的方法是分别录制音频和视频 然后最后合并这些文件以制作最终视频 并且远程 mp4 文件成功 但现在对于 HLS m3u8 文件 我可以使用 AV
  • log4j 用于独立的 java 项目

    我正在考虑将 log4j 用于我的独立 java 项目 是否可以将它用于 java 项目 而不是网络应用程序 如果可能的话 我应该如何初始化属性文件以及应该在哪里初始化 我放置了属性文件 目录结构 任何帮助表示赞赏 是的 这是可能的 我们一
  • Bing API v1 文档

    有谁知道我可以在哪里找到 Bongs API 的最新文档 网址如下 https api datamarket azure com Bing Search v1 Web 甚至他们自己的网站在我读过的单词文档中也有错误的 URL 即https
  • 列包含列 2

    我有一个数据框 我想测试 C 在每行上 B 列中的数字是否在字符串 A 列中 df pd DataFrame A me 123 me 123 1234 me 12 123 and B 123 123 123 123 6 我想得到 A B C
  • JPA继承entitymanager.find产生ClassCastException

    我有一个这样的类层次结构 Entity Table name call distribution policies Inheritance strategy InheritanceType JOINED public class CallD
  • 如何在 SQL Server 中使用 Switch

    我想用CASE在我的存储过程中 我的代码中出现一些语法错误 select case Temp when 1 then selectoneCount selectoneCount 1 when 2 then selectoneCount se
  • 将单元格值转换为列标题,如果在 python 中匹配则用 1 填充

    我有一个数据框 df ID 0 1 2 3 4 1 10 20 5 1 2 2 3 4 NaN 10 1 我需要转置该列的单元格值0 1 2 3 4 到列标题 如果相应 ID 存在单元格值 则将其填充为 1 期望的输出 ID 1 2 3 4
  • 设置用于小程序启动的默认 JVM 参数

    我正在尝试远程调试 Java 小程序 但我似乎无法使 agentlib jdwp JVM 参数起作用 我尝试在 Java 控制面板中为所使用的特定 JRE 指定它 并且尝试通过用于启动小程序的 JNLP 文件来设置它 为小程序启动设置 JV
  • React-router v4 - 无法获取 *url*

    我开始使用react router v4 我有一个简单的
  • Socket.io 清理传入数据 (xss)

    我在expressjs 3中使用socket io 我想用express validator清理传入的消息 我有这个代码 var expressValidator require express validator sanitize req