谷歌应用程序引擎:cron作业的安全性(Google app engine: security of

2019-07-17 22:11发布

GAE提供cron作业的计划作业。 如何设置一些安全,防止有人从执行HTTP直接拿到? 在下面的例子中,我可以在浏览器的URL字段中键入任何时间/了updateData在下面的设置执行作业:

cron:
- description: daily update of the data in the datastore
  url: /updateData
  schedule: every day 00:00
  timezone: ...

Answer 1:

除了什么保罗·C说,你可以创建检查X-AppEngine上,克龙头,如下所示的装饰。 顺便说一句,报头不能被欺骗,这意味着如果并非源自一个cron作业的请求有这个头,应用程序引擎将改变首的名字。 你也可以写一个类似的方法进行的任务,检查X-AppEngine上-TASKNAME在这种情况下。

"""
Decorator to indicate that this is a cron method and applies request.headers check
"""
def cron_method(handler):
    def check_if_cron(self, *args, **kwargs):
        if self.request.headers.get('X-AppEngine-Cron') is None:
            self.error(403)
        else:
            return handler(self, *args, **kwargs)
    return check_if_cron

并把它作为:

class ClassName(webapp2.RequestHandler):
    @cron_method
    def get(self):
        ....


Answer 2:

您需要添加

login: admin

到左撇子,因为这里详细: 网址安全的克龙

EG

application: hello-cron
version: 1
runtime: python27
api_version: 1

handlers:
- url: /updateData
  script: reports.app
  login: admin


文章来源: Google app engine: security of cron jobs