Firebase CronJobs - 如何允许来自一个 cronjob 站点的 http 触发器
Firebase CronJobs - how to allow http triggers from one cronjob site
由于 Firebase(实时数据库)不支持 cron-jobs 我正在使用 cron-job.org 来安排 http 触发器。这个函数应该在每天结束时触发一次,所以在 11:55pm 左右。问题是我只希望 cron-job.org 能够触发 http 端点而不是其他任何人(例如,有人恶意尝试每天多次触发它)。我怎样才能在我的云功能中实现这一点?
我已经设置了 cronjob,这是我现在拥有的所有代码:
exports.findAndDeleteSevenDayJobs = functions.https.onRequest((req, res) => {
console.log('req',req);
});
另外,cron-job.org 提供了这个:
而且我不知道如何使用它。
要在 firebase RDB 中创建 cron-jobs,请使用像 cron-job.org
这样的第三方服务
1) 创建密钥
为了确保一切安全,您必须生成一个安全密钥,从现在开始称为 YourSelfGeneratedButSecureKey
。
您可以在终端中输入以下内容生成一个:node -e "console.log(require('crypto').randomBytes(20).toString('hex'))"
2) 创建 CRON 作业
创建一个新的 cron-job,它将命中您的云函数端点并将创建的密钥作为 url-query 附加,如下所示:
https://{projectSpecific}.cloudfunctions.net/{nameOfFunction}?key={YourSelfGeneratedButSecureKey}
在您的终端中使用以下命令将密钥设置到您的环境中:
firebase functions:config:set cron.key="{YourSelfGeneratedButSecureKey}"
3) 云函数
为了确保一切都是最高安全性,您可以通过键入 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(实时数据库)不支持 cron-jobs 我正在使用 cron-job.org 来安排 http 触发器。这个函数应该在每天结束时触发一次,所以在 11:55pm 左右。问题是我只希望 cron-job.org 能够触发 http 端点而不是其他任何人(例如,有人恶意尝试每天多次触发它)。我怎样才能在我的云功能中实现这一点?
我已经设置了 cronjob,这是我现在拥有的所有代码:
exports.findAndDeleteSevenDayJobs = functions.https.onRequest((req, res) => {
console.log('req',req);
});
另外,cron-job.org 提供了这个:
而且我不知道如何使用它。
要在 firebase RDB 中创建 cron-jobs,请使用像 cron-job.org
这样的第三方服务1) 创建密钥
为了确保一切安全,您必须生成一个安全密钥,从现在开始称为 YourSelfGeneratedButSecureKey
。
您可以在终端中输入以下内容生成一个:node -e "console.log(require('crypto').randomBytes(20).toString('hex'))"
2) 创建 CRON 作业
创建一个新的 cron-job,它将命中您的云函数端点并将创建的密钥作为 url-query 附加,如下所示:
https://{projectSpecific}.cloudfunctions.net/{nameOfFunction}?key={YourSelfGeneratedButSecureKey}
在您的终端中使用以下命令将密钥设置到您的环境中:
firebase functions:config:set cron.key="{YourSelfGeneratedButSecureKey}"
3) 云函数
为了确保一切都是最高安全性,您可以通过键入 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
});