【发布时间】:2017-03-04 23:46:24
【问题描述】:
我有一个用于 Google API 的 API 密钥,我想在对它的所有请求中使用它。其中一些请求将来自 Google App Engine (Python 2.7) 应用程序。本来打算用UrlFetch库来完成POST请求,基本如下:
headers = {'Content-Type': 'application/json'}
payload = {'longUrl': request.long_url}
result = urlfetch.fetch([API_REQUEST_URL],
method=urlfetch.POST,
payload=json.dumps(payload),
headers=headers)
json_result = json.loads(result.content)
我已将我的 API 密钥的引用限制设置为 *.[my-app].appspot.com/*,希望这将保护我的 API 密钥免遭未经授权的使用,并消除更新基于 IP 的密钥限制的需要(因为 App Engine IP 会更改所有时间)。
这种方法让我失望了,因为似乎 urlfetch 并没有自己指定引荐来源网址的值。我想我可以添加自己的推荐人,但其他人也可以。这种方法不是很安全。
最佳做法是什么?鉴于我在 App Engine 中使用 urlfetch,我应该如何限制密钥?如果我确实使用了 HTTP Referrer 限制,我应该使用哪个地址?
非常感谢。
【问题讨论】:
标签: python google-app-engine google-cloud-storage google-cloud-endpoints