在Apache中记录POST数据的最佳方法?

时间:2009-06-13 04:17:32

标签: logging apache apache-config

想象一下,您有一个站点API,它接受带有参数的GET请求形式的数据,或者作为POST请求(例如,使用标准的url编码和& -separated POST数据)。如果要记录和分析API调用,GET请求将很容易,因为它们将位于apache日志中。是否有一种简单的方法来获取apache日志中的POST数据?

(当然我们可以在应用程序中显式记录POST数据,但我希望有一种配置级方式,让我不用担心它在代码中。)

8 个答案:

答案 0 :(得分:38)

使用Apache的mod_dumpio。出于明显的原因要小心。

请注意mod_dumpio stops logging binary payloads at the first null character。例如,gzip文件的multipart/form-data上传可能只显示mod_dumpio的前几个字节。

另请注意,即使在httpd.conf文件夹中存在该模块,Apache也可能不会在/modules中提及此模块。只需手动添加LoadModule即可。

答案 1 :(得分:13)

虽然回答已经很晚了。该模块可以执行:https://github.com/danghvu/mod_dumpost

答案 2 :(得分:10)

您可以安装await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() => { // your code })); 并输入mod_security

/etc/modsecurity/modsecurity.conf

答案 3 :(得分:7)

不完全是答案,但我从未听说过如何在Apache本身做到这一点。我想这可能是一个扩展模块,但我不知道是否已经编写了一个。

一个问题是POST数据可能非常大,如果您没有对记录的数量进行某种限制,一段时间后可能会耗尽磁盘空间。黑客可能会弄乱你的服务器。

答案 4 :(得分:6)

您可以使用[ModSecurity][1]查看POST数据。

在Debian / Ubuntu上安装:

$ sudo apt install libapache2-mod-security2

使用推荐的配置文件:

$ sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

重新加载Apache:

$ sudo service apache2 reload

现在,您将在/var/log/apache2/modsec_audit.log

下找到您的数据
$ tail -f /var/log/apache2/modsec_audit.log
--2222229-A--
[23/Nov/2017:11:36:35 +0000] 
--2222229-B--
POST / HTTP/1.1
Content-Type: application/json
User-Agent: curl
Host: example.com

--2222229-C--
{"test":"modsecurity"}

答案 5 :(得分:2)

实际上,我会在应用程序中执行此操作。当然,它仍然可以在运行时配置,具体取决于您的记录器系统。例如,如果您使用Apache Log(log4j / cxx),则可以为此类URL配置专用记录器,然后在运行时从XML文件对其进行配置。

答案 6 :(得分:0)

更简单的选项可能是在POST数据到达服务器之前记录它。对于Web应用程序,我使用Burp Proxy并设置Firefox将其用作HTTP / S代理,然后我可以在线路上观看(和修改)数据'实时。

为了在没有浏览器的情况下发出API请求,SoapUI非常有用并且可能显示类似的信息。我敢打赌,你可能也可以配置SoapUI通过Burp连接(虽然只是猜测)。

答案 7 :(得分:0)

您还可以使用内置的取证日志功能。