Nginx & Apache 阻擋 User Agent 空值的訪問

2015-06-22 Apache, Nginx

在一般瀏覽網站上,User Agent 是 User 端回傳給 Web Server 的瀏覽器和系統訊息,例如 MSIE 8.0 Windows NT 6.1

 

在 access.log 常見出現的訊息有以下

有從Chrome來的
192.168.1.10 - - [22/Jun/2015:03:43:26 +0800] "GET / HTTP/1.0" 200 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; AppleWebKit/537.36 (KHTML, like Gecko); Chrome/30.0.1599.101 Safari/537.31

也有從IE來的
192.168.1.11 - - [22/Jun/2015:12:00:35 +0800] "GET / HTTP/1.0" 200 21612 "-" "Mozilla/4.0 (compatible; MSIE 7.
0; Windows NT 6.1; Trident/4.0; SLCC2;  .NET CLR 2.0.50727; QQDownload; SE 2.X MetaSr 1.0)"

 

 

如果你是開放式的網站,就有可能會遇到沒有 User Agent 的訪問

通常沒有 User Agent 訪問,很有可能是垃圾程式、攻擊程式在嘗試 try connection

 

面對這樣的問題,從 Nginx 可以做一些簡單的判斷,讓 User Agent 為空值時導向 404 或我們想要告知的頁面

在 nginx.conf 加入以下

location / {
	if ($http_user_agent ~ "^$"){
		return 404;
	}
}

 

return 的方式可以自行調整

 

 

如果是 Apache 可以在 .htaccess 加入以下

RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^(.*)$ - [F,L]

 

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱