是否有一种优雅的方法来防止来自应用程序外部的引用者的请求?从app.yaml文档来看,这似乎并不是一个收件箱功能,但似乎它是如此的可取/普遍,以至于它必须隐藏在某个地方,而不必为每个应用程序手动重新实现它。
发布于 2016-08-16 00:03:21
不是的。在GAE中没有这方面的内置逻辑。任何支持都必须在特定于应用程序的请求路由级别上存在。
发布于 2016-08-15 16:52:05
它是内置的。
在app.yaml中,您可以为一个处理程序指定login: admin,它只接受来自admin或AppEngine的请求(例如cron、任务队列,以及应用程序本身的恰当的urlfetch --最后一个不能100%确定)。
见docs:element
此外,您还可以检查HTTP_HEADERS,如引用,IP,用户代理。
此外,您还可以发出一个令牌,并在每个请求中传递/检查它。
发布于 2016-08-15 23:02:10
这里可能有几个问题被混淆了。
CORS -一种浏览器强制的安全措施,以防止网页恶意或以其他方式将数据发送到非原始服务器。服务器不能强制执行此操作,只能允许。允许这是应用程序级别的问题(即不内置到GAE中)
XSRF -服务器强制执行安全措施,以阻止通过身份验证的用户被恶意客户端代码滥用其帐户。这是应用程序级别的关注点(即不内置到GAE中)
身份验证--通过某些权限集标识用户或客户端。GAE (云端点,提供身份服务,需要管理登录)对此有一定的支持,但这通常也是应用程序级别的问题。在授权客户端(相对于用户)的情况下,没有内置的支持。
授权-基于角色/权限的不同访问集。不是内置的。
其他解决办法:
使用主机或源头
API令牌-可以通过https对服务器进行服务器访问,但在发布的客户端(如网页)上使用时会受到轻微的破坏。
您最好的选择是利用您的框架并拥有用户帐户。
如果您不想这样做,在一般情况下,类似XSRF (标头和cookie中的令牌)就足以确保web客户端响应您的“应用程序”。但是,只有当客户端是web浏览器时才能工作,这与原始/主机相同。
https://stackoverflow.com/questions/38958826
复制相似问题