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

问题描述 投票:0回答:9

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

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

logging apache apache-config
9个回答
45
投票

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

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


另请注意,即使该模块存在于

multipart/form-data

文件夹中,Apache 也可能不会在

httpd.conf
中提及该模块。只需手动添加
/modules
就可以了。
    


27
投票
LoadModule

并放入

mod_security
:
/etc/modsecurity/modsecurity.conf



19
投票
SecAuditEngine On SecAuditLog /var/log/apache2/modsec_audit.log SecRequestBodyAccess on SecAuditLogParts ABIJDFHZ

查看 POST 数据。


在 Debian/Ubuntu 上安装:

[ModSecurity][1]

使用推荐的配置文件:

$ sudo apt install libapache2-mod-security2

重新加载 Apache:

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


您现在将在
$ sudo service apache2 reload

下找到记录的数据

/var/log/apache2/modsec_audit.log



13
投票
https://github.com/danghvu/mod_dumpost


3
投票

    适用于基于 Debian 的操作系统
  • sudo a2enmod dump_io

  • 适用于基于 RedHat 的操作系统
  • 无需执行任何操作,默认已启用

  • 将 mod_dumpio 添加到您的虚拟主机配置中

$ 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"}

重新启动阿帕奇


2
投票


0
投票
Burp Proxy

并将 Firefox 设置为将其用作 HTTP/S 代理,然后我可以实时“在线”观看(和破坏)数据。 对于在没有浏览器的情况下发出 API 请求,SoapUI 非常有用,并且可能会显示类似的信息。我敢打赌,您也可以将 SoapUI 配置为通过 Burp 连接(不过只是猜测)。


0
投票

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

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


-2
投票

© www.soinside.com 2019 - 2024. All rights reserved.