【问题标题】:How to tell if a request comes from browser or server?如何判断请求是来自浏览器还是服务器?
【发布时间】:2013-12-11 21:26:14
【问题描述】:

是否有可靠的方法来判断对您网站的请求是来自服务器到服务器调用还是来自浏览器 url 调用?

例如,Paypal IPN 是服务器到服务器的调用。但是您也可以通过直接从带有浏览器参数的 url 调用它来伪造它。

我尝试了两种方式并在这两种情况下都转储了 $_SERVER,并且为浏览器设置了一些变量,但没有为服务器到服务器调用设置......即

HTTP_COOKIE
HTTP_CACHE_CONTROL

它们在服务器到服务器调用中不存在。我可以可靠地假设情况总是如此吗?

我可以使用 HTTP_USER_AGENT,但它可以是任何东西,我不想检查 REMOTE_ADDR,因为我试图让这更像是一种动态更改,不限于贝宝或任何特定的服务器端回复。我的假设是服务器端调用会缺少“通用浏览器”值。它可能不是 100% 可靠,但可能是 99%

这将最终确定我是在回调页面上使用 php 标头重定向还是 javascript 重定向。

想法?

【问题讨论】:

    标签: client-server http-host


    【解决方案1】:

    是否有可靠的方法来判断对您网站的请求是来自服务器到服务器调用还是来自浏览器 url 调用?

    不,没有 100% 可靠的方法。如果用户能够掌握正确的参数,他/她可以使用 Web 浏览器或简单的自定义应用程序轻松伪造“服务器到服务器”请求。

    唯一真正的(硬核)防御伪造是结合使用 HTTPS 和客户端证书或作为请求的一部分发送的某种安全令牌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多