Firebase CronJobs-如何从一个cronjob站点允许http触发器

Firebase CronJobs-如何从一个cronjob站点允许http触发器,firebase,cron,google-cloud-functions,http-authentication,Firebase,Cron,Google Cloud Functions,Http Authentication,因为Firebase(实时数据库)不支持cron作业,所以我正在使用它来调度http触发器。此功能应该在每天结束时启动一次,因此在晚上11:55左右启动。问题是,我只希望cron-job.org能够触发http端点,而不是其他人(例如,有人恶意尝试一天多次触发它)。如何在我的云功能中实现这一点 我已经设置了cronjob,下面是我现在拥有的所有代码: exports.findAndDeleteSevenDayJobs = functions.https.onRequest((req, res)

因为Firebase(实时数据库)不支持cron作业,所以我正在使用它来调度http触发器。此功能应该在每天结束时启动一次,因此在晚上11:55左右启动。问题是,我只希望cron-job.org能够触发http端点,而不是其他人(例如,有人恶意尝试一天多次触发它)。如何在我的云功能中实现这一点

我已经设置了cronjob,下面是我现在拥有的所有代码:

exports.findAndDeleteSevenDayJobs = functions.https.onRequest((req, res) => {
  console.log('req',req);
});
此外,cron-job.org还提供:


我不知道如何使用它。

要在firebase RDB中创建cron作业,请使用第三方服务,如

创建密钥

为了确保一切安全,您必须生成一个安全密钥,从现在起,该密钥名为
yourselgeneratedbutsecurekey

您可以通过键入:
node-e“console.log(require('crypto').randomBytes(20).toString('hex')”

创建CRON作业

创建一个新的cron作业,该作业将命中您的云函数端点,并将创建的密钥作为url查询附加,如下所示:

https://{projectSpecific}.cloudfunctions.net/{nameoff function}?key={YourSelfGeneratedButSecureKey}

在终端中使用以下命令将密钥设置到环境中:
firebase函数:config:set cron.key=“{YourSelfGeneratedButSecureKey}”

云功能

要确保所有内容都具有最大的安全性,您可以通过键入
npm install--save secure compare
来安装
secure compare

然后在您的云函数中:

const secureCompare = require('secure-compare');

exports.{nameOfFunction} = functions.https.onRequest((req, res) => {

  const { key } = req.query;

  if (!secureCompare(key, functions.config().cron.key)) {
    console.log('Key in request and in env do NOT match');
    res.status(403).send('Security key does not match.');
    return null;
  }

  // DO REPETITIVE STUFF SECURELY 

});

要在firebase RDB中创建cron作业,请使用第三方服务,如

创建密钥

为了确保一切安全,您必须生成一个安全密钥,从现在起,该密钥名为
yourselgeneratedbutsecurekey

您可以通过键入:
node-e“console.log(require('crypto').randomBytes(20).toString('hex')”

创建CRON作业

创建一个新的cron作业,该作业将命中您的云函数端点,并将创建的密钥作为url查询附加,如下所示:

https://{projectSpecific}.cloudfunctions.net/{nameoff function}?key={YourSelfGeneratedButSecureKey}

在终端中使用以下命令将密钥设置到环境中:
firebase函数:config:set cron.key=“{YourSelfGeneratedButSecureKey}”

云功能

要确保所有内容都具有最大的安全性,您可以通过键入
npm install--save secure compare
来安装
secure compare

然后在您的云函数中:

const secureCompare = require('secure-compare');

exports.{nameOfFunction} = functions.https.onRequest((req, res) => {

  const { key } = req.query;

  if (!secureCompare(key, functions.config().cron.key)) {
    console.log('Key in request and in env do NOT match');
    res.status(403).send('Security key does not match.');
    return null;
  }

  // DO REPETITIVE STUFF SECURELY 

});

没有关系。已使用以下方法解决此问题:。将密钥附加到cron job的http请求,并使用secure-compare在云函数中进行比较。利用这一点,您发现了API密钥背后的秘密魔力。;-)你介意把你的方法作为答案吗?“它将来可能对其他人有用。”弗兰克瓦帕夫伦当然,马上!没有关系。已使用以下方法解决此问题:。将密钥附加到cron job的http请求,并使用secure-compare在云函数中进行比较。利用这一点,您发现了API密钥背后的秘密魔力。;-)你介意把你的方法作为答案吗?“它将来可能对其他人有用。”弗兰克瓦帕夫伦当然,马上!cron-jobs.org-此链接已失效。感谢您展示您的解决方案。:)cron-jobs.org-此链接已失效。感谢您展示您的解决方案。:)