74

想象一下,您有一个站点 API,它以带有参数的 GET 请求或 POST 请求(例如,使用标准 url 编码、& 分隔的 POST 数据)的形式接受数据。如果你想记录和分析 API 调用,GET 请求会很容易,因为它们会在 apache 日志中。是否也有一种简单的方法可以在 apache 日志中获取 POST 数据?

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

4

9 回答 9

42

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

请注意,mod_dumpio在第一个空字符处停止记录二进制有效负载。例如,multipart/form-data上传 gzip 文件可能只会显示带有 mod_dumpio 的前几个字节。

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

于 2010-02-08T04:33:26.963 回答
21

您可以安装mod_security并放入/etc/modsecurity/modsecurity.conf

SecRuleEngine On
SecAuditEngine On
SecAuditLog /var/log/apache2/modsec_audit.log
SecRequestBodyAccess on
SecAuditLogParts ABIJDFHZ
于 2016-07-13T13:08:52.787 回答
13

虽然回答晚了。这个模块可以做:https ://github.com/danghvu/mod_dumpost

于 2012-12-09T11:10:08.213 回答
13

您可以[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"}
于 2017-11-23T13:23:10.393 回答
9

不完全是答案,但我从未听说过在 Apache 本身中执行此操作的方法。我想扩展模块可能是可能的,但我不知道是否已经编写了一个。

一个问题是 POST 数据可能非常大,如果您不对记录的数量设置某种限制,那么一段时间后您可能会用完磁盘空间。这是黑客弄乱您的服务器的可能途径。

于 2009-06-13T05:12:05.670 回答
2

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

于 2009-06-13T04:22:38.363 回答
0

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

对于在没有浏览器的情况下发出 API 请求,SoapUI 非常有用,并且可能会显示类似的信息。我敢打赌,您可能也可以将 SoapUI 配置为通过 Burp 进行连接(尽管只是猜测)。

于 2016-06-30T17:48:49.543 回答
0

您还可以使用 mod DumpIO,激活它,然后从您的 Apache Log Conf 加载。将日志名称定义为 postdata 名称,并加载到 AccessLog 语句

#AccessLog /path/to/your/log/abc.access.log 结合

AccessLog /path/to/your/log/abc.access.log postdata

于 2022-01-22T04:47:23.280 回答
-1

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

于 2018-10-17T00:31:10.927 回答