2013-10-22 68 views
4

我的第一個基於Node.js的公共網站(使用Express)在幾周前進入公開場合。我經常檢查服務器日誌,有時候會有一些奇怪的記錄。 下面是一些例子:在Node.js Express日誌文件中發現奇怪的http請求

- - - [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(記錄: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. 似乎有人試圖使用我的網站作爲代理。他/她如何發送像GET http://www.google.com這樣的http請求?我應該如何阻止這些請求?
  3. 基於服務器日誌中的這些記錄,我的Web服務器安全性足夠了嗎?我的項目中是否應該使用頭盔(github.com/evilpacket/helmet)或CSRF(www.senchalabs.org/connect/csrf.html)?

非常感謝。

回答

3

您的服務器發回200個響應這些請求,因此他們似乎被一些路線在你的應用程序也許是一個包羅萬象的路線處理(;它總是返回3539個字節,因此它似乎是相同的處理器)。不知道你的服務器爲什麼接受這些請求,很難說它是否安全。

您可以輕鬆地使用curl產生這樣的請求:

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

爲遠程地址爲空:在IPv6上通過對不起,不知道:((也許IPv6的不,請求似乎得到記錄就好了)

+1

嗨@robertklep,感謝您的建議。我沒有明確地實現一個通用的路由在我的服務。然而,使用'curl'命令你建議,在大多數情況下,我的服務器將簡單地返回首頁。看起來好像我的服務器沒有被入侵(還) 關於丟失的遠程地址,我猜黑客有自己的花招:) 無論如何,再次感謝。 –