3

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

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

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

HTTP_COOKIE
HTTP_CACHE_CONTROL

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

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

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

想法?

4

1 回答 1

2

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

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

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

于 2014-03-26T11:38:58.333 回答