极光推送与Nodejs集成问题探讨

发布于 1周前 作者 vueper 来自 nodejs/Nestjs

极光推送与Nodejs集成问题探讨

极光推送官方 Nodejs SDK 竟然 eval 去执行从服务器传回来的代码 还“聪明”地用括号括起来,呵呵 https://github.com/jpush/jpush-api-nodejs-client/blob/master/lib/JPush/JPush.js#L448


16 回复

这代码牛逼坏了


在那个 JSON 还没被浏览器广泛兼容的年代, eval 加括号解析 JSON 是很常见的事…

不过现在用 JSON.parse 就能解析 JSON 了,如果还在用老掉牙的 eval 会不会造成漏洞利用?

已经修改了,官方动作有点快

要是不改 n 个服务器又会背沦陷了 :)

原谅提交这行代码的那位可怜的爪哇程序猿…

奇怪, V 站没改主题啊,为啥这个页面打开是黑色背景的。

我想知道你是如何发现的

确实有安全问题,只是看到楼主一脸诧异的样子…

它们的服务器出了问题,发出来一个不完整的 json , eval 出错,导致我们的服务重启。看日志发现的

我想说 468 行 if (method === ‘POST’ || method === ‘post’) 你就是不会 method.toLowerCase() === ‘post’ 吗

关于极光推送(JPush)与Node.js的集成问题,以下是一些专业的探讨和示例代码。

极光推送是一个面向开发人员的第三方消息推送服务,支持多种平台,包括iOS和Android。要在Node.js中集成极光推送,首先需要注册一个极光账号,并在应用中心创建应用,获取AppKey和Master Secret。

接下来,可以在Node.js项目中安装极光推送的Node.js SDK。使用npm进行安装:

npm install jpush-sdk

安装完成后,可以在代码中引入并使用这个SDK。以下是一个简单的推送示例:

const JPush = require('jpush-sdk');
const client = JPush.buildClient('your_app_key', 'your_master_secret');

client.push()
  .setPlatform('all') // 可选参数,指定推送平台
  .setAudience(JPush.ALL) // 推送给所有用户
  .setNotification(JPush.android('Hello, JPush', 'Android Notification', 1, {}), JPush.ios('Hello, JPush', 'ios sound', 1))
  .send(function(err, res) {
    if (err) {
      console.log(err.message);
    } else {
      console.log('Sendno: ' + res.sendno);
      console.log('Msg_id: ' + res.msg_id);
    }
  });

在上面的代码中,需要将'your_app_key''your_master_secret'替换为你在极光推送平台上获取的实际AppKey和Master Secret。

此外,还需要注意极光推送的版本兼容性问题,特别是在集成到Cordova等项目中时,要确保插件版本与项目依赖的版本兼容。如果遇到推送失败的问题,可以检查包名是否正确,以及确保服务器和客户端的配置一致。

回到顶部