0

我正在用 Python-tornado 构建一个 Web 服务器。服务器是提供一种关于某个国家所有餐馆的搜索服务。所以逻辑很简单:用户在网页上输入关键字并提交,服务器回复一些消息。总之,它就像一个迷你谷歌。

我也做了一个简单的日志。

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

[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

我不明白这种请求是如何产生的。例如,如果我的 web 服务器的地址是www.example.com,并且我向它发送了一些 get 请求,它必须是这样的:www.example.com/abcd. 但是这个请求不是以 开头的/,怎么来的?



这是某种 XSS(跨站点脚本)吗?似乎有人试图通过我的网络服务器进行一些跨域请求。如果我是对的,我将过滤包含<script>. 我对吗?

4

2 回答 2

1

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

这通常通过使用工具并直接发出 GET 请求来完成。这是广告的常见做法。

如果您安装 OSSEC 之类的东西,您会看到更多的扫描仪整天对您的网站进行各种不同的操作。

您可以做的是设置一些防火墙规则。无论如何,这不会停止请求,但至少它们不会达到服务器日志。再说一遍——如果您的主要问题是日志膨胀,并且是您自己的服务器,您总是可以将百度排除在日志之外。(我个人不会这样做,只是指出这是一种选择。)但请记住,搜索引擎永远不会感到无聊而消失。

于 2017-06-26T11:55:25.730 回答
1

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

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

你错了。<script> 与 HTTP 协议的服务器端无关,也没有任何直接影响它的东西。不要将 HTML 和 JS 与 HTTP 混合使用。它们的共同点是 HTTP 最常见的传输是 HTML 页面和 JS 脚本。

哦,顺便说一句,将来自 HTTP 标头“User-Agent”的信息包含到日志中会很聪明,并且您可以通过使用 whois 和类似服务在一定程度上检查谁与您联系。

于 2017-06-26T12:01:35.213 回答