Hon*_*Guy 5 python google-app-engine google-cloud-storage google-cloud-endpoints
我有一个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)
Run Code Online (Sandbox Code Playgroud)
我已经为我的API密钥设置了一个引荐来源限制,*.[my-app].appspot.com/*希望这可以保护我的API密钥免受未经授权的使用,并且无需更新基于IP的密钥限制(因为App Engine IP一直在变化).
这种方法虽然让我失望,因为看起来urlfetch本身并没有为referrer指定值.我假设我可以添加自己的推荐人,但其他人也可以.这种方法不是很安全.
什么是最佳做法?鉴于我在App Engine中使用urlfetch,我应该如何限制密钥?如果我使用HTTP Referrer限制,我使用哪个地址?
非常感谢.
正如您所观察到的,引荐来源网址标头可能是伪造的,因此在 API 密钥上设置引荐来源网址限制一开始是毫无用处的。
但您可以根据标头添加检查X-Appengine-Inbound-Appid,该标头由 GAE 基础设施进行清理并精确识别应用程序。从向另一个 App Engine 应用程序发出请求:
向另一个 App Engine 应用程序发出请求时,您的 App Engine 应用程序必须通过
X-Appengine-Inbound-Appid向请求添加标头来声明其身份。如果您指示 URL 提取服务不遵循重定向,App Engine 会自动将此标头添加到请求中。要指示 URL Fetch 服务不遵循重定向,请将
fetchfollow_redirects参数设置为False。注意:如果您向其他 App Engine 应用程序发出请求,请使用其
appspot.com域名,而不是您的应用程序的自定义域。
| 归档时间: |
|
| 查看次数: |
586 次 |
| 最近记录: |