2013-11-26 328 views
3

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

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

我试图左右逢源,并在这两种情况下倾倒$ _ SERVER,到处都是被设置为不为服务器到服务器调用设置的浏览器,几个变量...即

HTTP_COOKIE 
HTTP_CACHE_CONTROL 

它们不存在于服务器到服务器的调用中。我能否可靠地认为永远是这种情况?

我可以使用HTTP_USER_AGENT但可以是任何东西,我不想要检查REMOTE_ADDR因为我试图使这个更多的是动态变化的,不限于PayPal或任何特定的服务器端答复的。我的假设是缺少“通用浏览器”值将不会在服务器端调用。它可能不是100%可靠,但可能99%

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

想法?

回答

2

是否有一种可靠的方式来判断对您的网站的请求是否来自服务器对服务器调用与浏览器URL调用?

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

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

相关问题