[求助]搭建Nodejs的nodeclub遇到问题若干

[求助]搭建Nodejs的nodeclub遇到问题若干

问题一:

由于iframe属于高危标签,默认被屏蔽了。如果是你自己搭建的网站,而且认为应该开放使用该标签的话,可以按照以下方法修改:

编辑 libs/util.js文件,在开头的var xss = require('xss');后面,增加以下代码来配置xss模块:

xss.whiteList['iframe'] = ['src', 'width', 'height', 'allowfullscreen', 'frameborder'];

关于xss模块的详细使用方法,参考这里:https://github.com/leizongmin/js-xss

6 回复

当然,我可以帮助你解决在搭建Node.js的NodeClub过程中遇到的一些常见问题。假设你遇到了一些与安全过滤相关的错误,特别是与iframe标签有关的问题,那么你可以参考以下内容进行解决。

问题描述

当你尝试在NodeClub中使用iframe标签时,发现它被自动过滤掉了。这通常是因为NodeClub使用了XSS(跨站脚本攻击)过滤器来确保用户提交的内容是安全的。

解决方案

步骤1:修改util.js

你需要修改NodeClub中的util.js文件,以允许iframe标签通过XSS过滤器。具体步骤如下:

  1. 打开你的NodeClub项目目录。
  2. 导航到libs/util.js文件。
  3. 在文件顶部找到var xss = require('xss');这一行。
  4. 在这一行之后添加以下代码:
xss whiteList['iframe'] = ['src', 'width', 'height', 'allowfullscreen', 'frameborder'];

这行代码的作用是告诉XSS过滤器,允许iframe标签,并且允许srcwidthheightallowfullscreenframeborder这些属性。

示例代码

// libs/util.js

var xss = require('xss');
xss whiteList['iframe'] = ['src', 'width', 'height', 'allowfullscreen', 'frameborder'];

// 其他代码保持不变...

步骤2:重启NodeClub服务

修改完util.js文件后,你需要重启NodeClub服务才能使更改生效。如果你使用的是PM2等进程管理工具,可以执行以下命令:

pm2 restart nodeclub

如果你没有使用任何进程管理工具,直接停止并启动NodeClub服务即可:

npm stop
npm start

总结

通过以上步骤,你应该能够成功地让iframe标签在NodeClub中正常显示。如果还有其他问题,建议查看NodeClub的官方文档或社区支持,以获取更多帮助。

希望这能帮到你!如果有其他问题,请随时提问。


如果想嵌入那个视频网站的视频,而且他们的代码不一,那岂不是要添加很多白名单?

问题三:已经发了一个pull request,详见 https://github.com/cnodejs/nodeclub/pull/96

合并了。

问题二, 请问知道是什么原因吗?

根据你的描述,你在搭建Nodejs的nodeclub时遇到了几个问题。我将针对你提到的第一个问题进行解答,并提供相关的代码示例。

问题一:解决iframe标签被屏蔽的问题

解决方案:

  1. 编辑util.js文件: 找到项目的libs/util.js文件,并在文件中var xss = require('xss');这行之后添加以下代码,以允许iframe标签及其属性:

    xss.whiteList['iframe'] = ['src', 'width', 'height', 'allowfullscreen', 'frameborder'];
  2. 重启服务: 修改完上述代码后,需要重启你的Nodeclub服务,以便更改生效。可以通过运行以下命令重启服务:

    npm start

代码示例及解释:

// libs/util.js

// 引入xss模块
var xss = require('xss');

// 配置xss模块,允许iframe标签及其指定属性
xss.whiteList['iframe'] = ['src', 'width', 'height', 'allowfullscreen', 'frameborder'];

// 其他原有代码保持不变

详细说明:

  • xss模块用于防止跨站脚本攻击(XSS)。通过配置whiteList,你可以指定哪些HTML标签和属性是安全的,可以被允许在输出时保留。
  • 上述代码片段仅配置了iframe标签以及它的常见属性(如src, width, height等),这样用户在输入含有这些标签的内容时,Nodeclub就不会自动过滤掉它们。
  • 如果你还想配置其他标签或属性,请查阅js-xss的官方文档获取更多细节。

以上步骤应该能帮助你解决Nodeclub中iframe标签被屏蔽的问题。如果你还有其他问题,请随时提出!

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!