保护部署在Node / Java中的Google App Engine服务免受脚本攻击

时间:2017-11-20 15:07:06

标签: google-app-engine google-cloud-platform

我在GAE(用Node编写)中部署了一个app引擎服务,以接受来自我网站的一系列点击流事件。数据作为CORS ajax调用推送。我认为,由于可以通过开发人员工具在浏览器中看到POST请求,有人可以使用应用引擎URL从浏览器控制台发布类似的数据。(就像在Firefox中,我们可以重新发送URL。Chrome也有这个功能我猜测) 我在这里看到的一些选项是,

  1. 使用防火墙设置仅允许我的域将数据发送到GAE。          这仍然会让我失望,因为可以重复地从浏览器控制台发出请求)
  2. 使用WAF(Web应用程序防火墙)作为代理来创建一些自定义规则。
  3. 我的GAE服务保障方法应该是什么?

1 个答案:

答案 0 :(得分:0)

我认为#1方法实际上对你不起作用:如果帖子请求在浏览器的开发工具中可见,则意味着它们实际上是由客户制作的,而不是您的网站,因此您实际上无法使用防火墙规则来保护它们。

由于请求是在基本上源自您自己的网站/应用程序(我想象所提到的序列中的点击发生的地方)之后进入服务的,因此我将理智检查放在该网站/应用程序中(您已经拥有)可用于制定决策的更多上下文信息而不是服务本身(在最好的情况下,您必须通过循环来发现/恢复做出明智决策所需的原始上下文)。当然,这假设网站/应用程序不是静态/愚蠢的网站,并具有一定程度的智能。

例如,对于使用浏览器开发工具重播您所描述的帖子请求的情况 - 网站应用可能会执行一些'附加到相应请求的标志,在第一次调用时设置(当外部服务也被触发时),因此可以简单地拒绝任何后续克隆/副本的请求。

完成上述操作后,我将替换从客户端发送服务请求。相反,在通过上述完整性检查后,我会使用您的网站/应用程序来创建和提出服务请求。使用简单的防火墙规则来保护这一点几乎是微不足道的 - 有效请求只能来自您的网站/应用程序,而不是来自客户端。我怀疑当你列出#1方法时,这更接近你的想法。