在Node.js Express日志文件中发现奇怪的http请求

我的第一个基于Node.js的公共网站(和Express)在几周前就已经公开发表了。 我经常检查服务器日志,有时还有一些奇怪的logging。 这里有些例子:

- - - [Sat, 19 Oct 2013 08:44:38 GMT] "GET http://www.google.com/ HTTP/1.0" 200 3539 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" 222.205.7.245 - - [Sat, 19 Oct 2013 19:54:57 GMT] "GET http://www.wikipedia.org/ HTTP/1.1" 200 3539 "-" "Mozilla/5.0 (compatible; MSIE 5.01; Win2000)" 223.94.178.192 - - [Sun, 20 Oct 2013 06:04:23 GMT] "GET http://www.sciencedirect.com/ HTTP/1.1" 200 3539 "-" "Mozilla/5.0 (compatible; MSIE 5.01; Win2000)" 

这些由默认格式的express.logger (logging器: http : //www.senchalabs.org/connect/logger.html )生成:

 default ':remote-addr - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"' 

只有express.urlencoded()被使用,并且express.cookieParserexpress.session在我的项目中不能使用。

这是我的问题:

  1. 为什么remote-addr在日志中丢失? 在node.js + express上获取此信息会极其困难吗?
  2. 似乎有人试图用我的网站作为代理。 他/她如何发送http请求,如GET http://www.google.com ? 我该如何阻止这类请求呢?
  3. 基于服务器日志中的这些logging,我的Web服务器安全性是否足够? 我应该在我的项目中使用头盔(github.com/evilpacket/helmet)还是CSRF(www.senchalabs.org/connect/csrf.html)?

非常感谢。

您的服务器正在为这些请求发回200个响应,所以它们似乎是由您的应用程序中的某个path处理的(也许是一条全线路由;它总是返回3539个字节,所以它似乎是相同的处理程序)。 不知道你的服务器为什么接受这些请求,很难说它是否安全。

你可以很容易地使用curl来生成这样的请求:

 curl --proxy YOURSERVER:THEPORT http://www.google.com 

至于远程地址是空的:对不起,不知道:( 🙁 也许IPv6?不,不过,通过IPv6传递的请求似乎得到logging就好了)