在我的RHEL 3安装Apache2与CGI模块后记录特殊的十六进制字符在他的日志/acces_log。为什么会出现这种情况?
[18/May/2015:16:35:11 +0200] "xacxc4>x90Xx7fxdbx18x85xf7xcbxd8FNx1bx1e\x89ix13xdf Axaex80xa3xeexbaAxa3x1fxc9orQixbd?x1eDx94x87xe7x94HAx83xa0x8bxadx14x13tl|2M<xdfxf8xe9xb7x04xe5xb0x85xd1xf8x07xd9~xca#-tx8exd3x13!Ix82;xe0x97zXx01xc4x03xdaxcb10x8bx9bxd0xe1xb2xd6xd7x02xfdx01xc5Dxc6x06" 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] "xacxc4>x90Xx7fxdbx18x85xf7xcbxd8FNx1bx1e\x89ix13xdf Axaex80xa3xeexbaAxa3x1fxc9orQixbd?x1eDx94x87xe7x94HAx83xa0x8bxadx14x13tl|2M<xdfxf8xe9xb7x04xe5xb0x85xd1xf8x07xd9~xca#-tx8exd3x13!Ix82;xe0x97zXx01xc4x03xdaxcb10x8bx9bxd0xe1xb2xd6xd7x02xfdx01xc5Dxc6x06" 400 226
[18/May/2015:16:38:21 +0200] "POST /cgi-bin/upload.pl HTTP/1.1" 200 24
问题在于非法客户端请求。服务器正常。它发送一个不正确的 content - length 报头,这会导致日志上的缓冲区溢出。例如,在这个报头请求中,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。