如何判断请求是来自浏览器还是服务器?

时间:2013-11-26 16:06:48

标签: client-server http-host

是否有可靠的方法来判断您的网站请求是来自服务器到服务器的呼叫还是来自浏览器网址的呼叫?

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

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

HTTP_COOKIE
HTTP_CACHE_CONTROL

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

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

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

想法?

1 个答案:

答案 0 :(得分:2)

  

是否有可靠的方法来判断您的网站请求是来自服务器到服务器的呼叫还是来自浏览器网址的呼叫?

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

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