在Apache中loggingPOST数据的最佳方法是什么?

想象一下,您有一个网站API,可以以带有参数的GET请求的forms或以POST请求的forms接受数据(比如说,使用标准的URL编码的&分离的POST数据)。 如果你想logging和分析API调用,那么GET请求将很容易,因为它们将在apache日志中。 有没有简单的方法来获取POST数据在Apache日志以及?

(当然,我们可以在应用程序中显式地loggingPOST数据,但是我想要一个configuration级别的方式,让我不用担心代码中的问题。)

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

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

另外请注意,Apache可能不会在httpd.conf提到这个模块,即使它存在于/modules文件夹中。 只需手动添加LoadModule将工作正常。

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

不完全是一个答案,但我从来没有听说过在Apache本身做到这一点的方法。 我想这可能是一个扩展模块,但我不知道是否有人写了。

一个问题是,POST数据可能非常大,如果你不logging多less限制,你可能会在一段时间后用完磁盘空间。 这可能是黑客惹恼你的服务器的一种途径。

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

 SecRuleEngine On SecAuditEngine On SecAuditLog /var/log/apache2/modsec_audit.log SecRequestBodyAccess on SecAuditLogParts ABIJDFHZ 

实际上,我会在应用程序中执行此操作。 它在运行时仍然是可configuration的,当然取决于你的logging器系统。 例如,如果使用Apache Log(log4j / cxx),则可以为此类URLconfiguration专用logging器,然后在运行时从XML文件configuration它。

POST数据到达服务器之前,更简单的select可能是日志logging。 对于Web应用程序,我使用Burp Proxy并将Firefox设置为HTTP / S代理,然后我可以实时观看(并且在线)数据。

对于不使用浏览器的API请求,SoapUI非常有用,并且可能会显示类似的信息。 我敢打赌,你可能可以configurationSoapUI通过Burp连接(只是猜测虽然)。