在 Apache2 的 access_log 中找到十六进制字符 (\xHH)
Found hex characters (\xHH) in access_log on Apache2
在我的 RHEL 3 中安装带有 CGI 模块的 Apache2 后,在他的 logs/acces_log 中记录了特殊的十六进制字符。为什么会出现那个?
[18/May/2015:16:35:11 +0200] "\xac\xc4>\x90X\x7f\xdb\x18\x85\xf7\xcb\xd8FN\x1b\x1e\\x89i\x13\xdf A\xae\x80\xa3\xee\xbaA\xa3\x1f\xc9orQi\xbd?\x1eD\x94\x87\xe7\x94HA\x83\xa0\x8b\xad\x14\x13tl|2M<\xdf\xf8\xe9\xb7\x04\xe5\xb0\x85\xd1\xf8\x07\xd9~\xca#-\t\x8e\xd3\x13!I\x82;\xe0\x97zX\x01\xc4\x03\xda\xcb10\x8b\x9b\xd0\xe1\xb2\xd6\xd7\x02\xfd\x01\xc5D\xc6\x06" 400 226
[18/May/2015:16:35:11 +0200] "POST /cgi-bin/upload.pl HTTP/1.1" 200 -
[18/May/2015:16:35:15 +0200] "GET /cgi-bin/md5.pl HTTP/1.1" 500 528
[18/May/2015:16:38:21 +0200] "\xac\xc4>\x90X\x7f\xdb\x18\x85\xf7\xcb\xd8FN\x1b\x1e\\x89i\x13\xdf A\xae\x80\xa3\xee\xbaA\xa3\x1f\xc9orQi\xbd?\x1eD\x94\x87\xe7\x94HA\x83\xa0\x8b\xad\x14\x13tl|2M<\xdf\xf8\xe9\xb7\x04\xe5\xb0\x85\xd1\xf8\x07\xd9~\xca#-\t\x8e\xd3\x13!I\x82;\xe0\x97zX\x01\xc4\x03\xda\xcb10\x8b\x9b\xd0\xe1\xb2\xd6\xd7\x02\xfd\x01\xc5D\xc6\x06" 400 226
[18/May/2015:16:38:21 +0200] "POST /cgi-bin/upload.pl HTTP/1.1" 200 24
问题出在非法客户申请。服务器没问题。它发送不正确的 Content-Lenght header,这会导致日志缓冲区过大。例如,在这个header申请中,Content-Length是1000,但正确的Content-Length是500。
Date: Thu, 28 May 2015 06:25:43 GMT
Server: Apache/2.0.52 (Red Hat)
Last-Modified: Mon, 26 Jan 2015 16:18:38 GMT
ETag: "115446-e4e1c0-7da57380"
Accept-Ranges: bytes
Content-Length: 1000
Connection: close
Content-Type: text/plain; charset=UTF-8
这招惹Apache2服务器读取缓冲区字节和他的acces_log出现十六进制字符\xHH .
在我的 RHEL 3 中安装带有 CGI 模块的 Apache2 后,在他的 logs/acces_log 中记录了特殊的十六进制字符。为什么会出现那个?
[18/May/2015:16:35:11 +0200] "\xac\xc4>\x90X\x7f\xdb\x18\x85\xf7\xcb\xd8FN\x1b\x1e\\x89i\x13\xdf A\xae\x80\xa3\xee\xbaA\xa3\x1f\xc9orQi\xbd?\x1eD\x94\x87\xe7\x94HA\x83\xa0\x8b\xad\x14\x13tl|2M<\xdf\xf8\xe9\xb7\x04\xe5\xb0\x85\xd1\xf8\x07\xd9~\xca#-\t\x8e\xd3\x13!I\x82;\xe0\x97zX\x01\xc4\x03\xda\xcb10\x8b\x9b\xd0\xe1\xb2\xd6\xd7\x02\xfd\x01\xc5D\xc6\x06" 400 226
[18/May/2015:16:35:11 +0200] "POST /cgi-bin/upload.pl HTTP/1.1" 200 -
[18/May/2015:16:35:15 +0200] "GET /cgi-bin/md5.pl HTTP/1.1" 500 528
[18/May/2015:16:38:21 +0200] "\xac\xc4>\x90X\x7f\xdb\x18\x85\xf7\xcb\xd8FN\x1b\x1e\\x89i\x13\xdf A\xae\x80\xa3\xee\xbaA\xa3\x1f\xc9orQi\xbd?\x1eD\x94\x87\xe7\x94HA\x83\xa0\x8b\xad\x14\x13tl|2M<\xdf\xf8\xe9\xb7\x04\xe5\xb0\x85\xd1\xf8\x07\xd9~\xca#-\t\x8e\xd3\x13!I\x82;\xe0\x97zX\x01\xc4\x03\xda\xcb10\x8b\x9b\xd0\xe1\xb2\xd6\xd7\x02\xfd\x01\xc5D\xc6\x06" 400 226
[18/May/2015:16:38:21 +0200] "POST /cgi-bin/upload.pl HTTP/1.1" 200 24
问题出在非法客户申请。服务器没问题。它发送不正确的 Content-Lenght header,这会导致日志缓冲区过大。例如,在这个header申请中,Content-Length是1000,但正确的Content-Length是500。
Date: Thu, 28 May 2015 06:25:43 GMT
Server: Apache/2.0.52 (Red Hat)
Last-Modified: Mon, 26 Jan 2015 16:18:38 GMT
ETag: "115446-e4e1c0-7da57380"
Accept-Ranges: bytes
Content-Length: 1000
Connection: close
Content-Type: text/plain; charset=UTF-8
这招惹Apache2服务器读取缓冲区字节和他的acces_log出现十六进制字符\xHH .