我正在用 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>
. 我对吗?