我在GAE(用Node编写)中部署了一个app引擎服务,以接受来自我网站的一系列点击流事件。数据作为CORS ajax调用推送。我认为,由于可以通过开发人员工具在浏览器中看到POST请求,有人可以使用应用引擎URL从浏览器控制台发布类似的数据。(就像在Firefox中,我们可以重新发送URL。Chrome也有这个功能我猜测) 我在这里看到的一些选项是,
我的GAE服务保障方法应该是什么?
答案 0 :(得分:0)
我认为#1方法实际上对你不起作用:如果帖子请求在浏览器的开发工具中可见,则意味着它们实际上是由客户制作的,而不是您的网站,因此您实际上无法使用防火墙规则来保护它们。
由于请求是在基本上源自您自己的网站/应用程序(我想象所提到的序列中的点击发生的地方)之后进入服务的,因此我将理智检查放在该网站/应用程序中(您已经拥有)可用于制定决策的更多上下文信息而不是服务本身(在最好的情况下,您必须通过循环来发现/恢复做出明智决策所需的原始上下文)。当然,这假设网站/应用程序不是静态/愚蠢的网站,并具有一定程度的智能。
例如,对于使用浏览器开发工具重播您所描述的帖子请求的情况 - 网站应用可能会执行一些'附加到相应请求的标志,在第一次调用时设置(当外部服务也被触发时),因此可以简单地拒绝任何后续克隆/副本的请求。
完成上述操作后,我将替换从客户端发送服务请求。相反,在通过上述完整性检查后,我会使用您的网站/应用程序来创建和提出服务请求。使用简单的防火墙规则来保护这一点几乎是微不足道的 - 有效请求只能来自您的网站/应用程序,而不是来自客户端。我怀疑当你列出#1方法时,这更接近你的想法。