繁体   English   中英

如何识别HTTP请求是来自浏览器还是来自代理服务器(或服务器)?

[英]How to identify whether http request is from browser or from proxy server (or server)?

我有一台接受http请求并返回json数据的服务器。 我的服务器如何知道http请求是否来自客户端浏览器而不是来自服务器? 特别是如果流量可能从客户端代理到另一台服务器并致电我的服务器。

我知道我可以检查http标头以了解用户代理,remote-addr..etc,但这并不安全。 人们可以伪造http请求标头。

我还能采取什么其他技巧来识别传入的请求?

您没有办法知道。 “匿名代理”将没有X-Forwarded-For标头。 一些IRC服务器在连接时会扫描客户端,以寻找常见的代理服务器端口,例如8080、3128等。 您可以破解YAPH之类的工具来查找与您联系的人的代理。 但是它不会选择phpproxy或在奇怪端口上运行的代理。

这是一场艰苦的战斗,这也是黑客使用它们的原因。 如果这是一个问题,也许您应该重新评估您的业务模型或应用程序如何运行。

如果您能够检查标头,则可以看到X-Forwarded-For,它将告诉您“真实”请求的ip。 合法代理使用此标头。

对于浏览器,您将感兴趣的是User-Agent标头。流行的浏览器和搜寻器将利用此标头。

也就是说,这些标头可以伪造或省略。 没有任何一种方法可以确定传入请求的“实际”因素。 最好合并尽可能多的标头,模式和行为,以确定请求的合法性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM