网络服务器:这个请求是如何出现的

web server: how does this request appear

我正在使用 Python-tornado 构建网络服务器。该服务器将提供一种有关某个国家/地区所有餐馆的搜索服务。所以逻辑很简单:用户输入一个关键字并在网页上提交,服务器回复一些消息。总而言之,就是一个mini-google.

我也做个简单的日志

在日志中,我可以看到大部分请求是这样的:

[I 170625 19:23:12 web:2063] 200 GET /images/icon-language.png (116.31.83.132) 0.88ms
[I 170625 19:23:12 web:2063] 200 GET /index?type=Sight&key=Bol%20content (116.31.83.132) 10.05ms
[I 170625 19:30:30 web:2063] 304 GET / (116.31.83.132) 0.87ms
[I 170625 19:30:44 web:2063] 200 GET / (116.31.83.132) 0.78ms
[W 170625 19:30:51 web:2063] 405 POST / (116.31.83.132) 1.20ms
[W 170625 19:31:00 web:2063] 405 POST / (116.31.83.132) 0.63ms
[I 170625 19:31:22 web:2063] 200 POST /index (116.31.83.132) 0.89ms
[I 170625 19:31:42 web:2063] 200 GET /index (116.31.83.132) 0.62ms
[I 170625 19:31:49 web:2063] 200 GET / (116.31.83.132) 0.78ms
[W 170625 19:31:57 web:2063] 404 GET /abce (116.31.83.132) 0.65ms

但令我惊讶的是,有一些请求如下:

[W 170625 18:43:41 web:2063] 404 GET http://baidu.com/ (106.2.125.215) 0.60ms

我无法理解这种请求是如何产生的。 例如,如果我的网络服务器地址是www.example.com,我向它发送一些get请求,它必须是这样的:www.example.com/abcd。但是这个请求不是/开头的,怎么会是



这是某种 XSS(跨站点脚本)吗?似乎有人试图通过我的 Web 服务器执行一些跨域请求。如果我是对的,我将过滤所有包含 <script> 的用户关键字。我说的对吗?

您看到的可能是对开放代理的扫描,例如有人正在查看 he/she/it 是否可以滥用您的服务器来浏览其他站点。它不必与 Python.

明确相关

这通常是通过使用工具并发出 GET-request directly 来完成的。这是广告的常见做法。

如果你安装像 OSSEC 这样的东西,你会看到更多的扫描器整天都在暴力破解你的网站以获取不同的东西。

您可以做的是设置一些防火墙规则。无论如何,这不会停止请求,但至少它们不会到达服务器日志。话又说回来——如果你的主要问题是日志膨胀,如果它是你自己的服务器,你总是可以从日志中排除百度。 (我不会亲自这样做,只是指出它是一个选项。)但是请记住,搜索引擎永远不会感到无聊和消失。

在我看来,有人将您的服务器与 baidu.com 混在一起了。或者您的服务器与他们有一些连接,并且由于 DNS 设置不当或类似问题而将请求弹回给您。 很有可能有人为 baidu.com 编写了错误的 IP 地址并得到了您的服务器。

我希望您知道 HTTP 请求是怎样的,并且调用 IP 对专业的网络服务器来说是不够的。您也必须查看 "Host" HTTP header。我不知道龙卷风是否默认这样做。但是当主机 header 不是您的网站 URL 时,您会断开连接并且不会发生混合。

你错了。