首页 文章

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

提问于
浏览
1

我有一个服务器,它接受http请求并返回json数据 . 我的服务器如何知道http请求是来自客户端浏览器而不是来自服务器?特别是如果流量可以从客户端代理到另一个服务器并调用我的服务器 .

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

我可以做些什么来识别传入的请求?

2 回答

  • 1

    你无从知晓 . "Anonymous proxies"将没有 X-Forwarded-For 标头 . 一些IRC服务器将在连接时端口扫描客户端,寻找常见的代理服务器端口,如8080,3128等 . 您可以破解像YAPH这样的工具来查找连接到您的人的代理 . 但它不会接收phpproxy,或者在奇怪的端口上运行代理 .

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

  • 0

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

    对于浏览器,用户代理 Headers 是您感兴趣的 . 热门浏览器和抓取工具将使用此标头 .

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

相关问题