想象一下,您有一個站點API,它以具有參數的GET請求或POST請求(例如,使用標準的url編碼,&分隔的POST數據)的形式接受數據。如果你想記錄和分析API調用,那麼GET請求將很容易,因爲它們將在apache日誌中。有沒有簡單的方法來獲取POST日誌中的數據?在Apache中記錄POST數據的最佳方式是什麼?
(當然,我們可以在應用程序日誌明確POST數據,但我想有一個配置級別的方式,讓我的代碼不擔心。)
想象一下,您有一個站點API,它以具有參數的GET請求或POST請求(例如,使用標準的url編碼,&分隔的POST數據)的形式接受數據。如果你想記錄和分析API調用,那麼GET請求將很容易,因爲它們將在apache日誌中。有沒有簡單的方法來獲取POST日誌中的數據?在Apache中記錄POST數據的最佳方式是什麼?
(當然,我們可以在應用程序日誌明確POST數據,但我想有一個配置級別的方式,讓我的代碼不擔心。)
我會做的實際上,應用程序。它仍然可以在運行時配置,當然取決於您的記錄器系統。例如,如果使用Apache Log(log4j/cxx),則可以爲此類URL配置專用記錄器,然後在運行時從XML文件配置它。
我擔心的是,每個api處理程序都必須在開始時記錄數據 - 在添加時很容易忘記,最多隻能添加樣板文件。 – 2009-06-13 04:33:11
任何好的框架都應該有前置和後置過濾器,或者相當於中間件的東西,它可以讓你開火併忘記。 – blockhead 2012-10-15 07:57:40
不完全是一個答案,但我從來沒有聽說過在Apache本身做到這一點的方法。我想這可能是一個擴展模塊,但我不知道是否寫過。
一個問題是POST數據可能非常大,如果您對記錄的數據量沒有限制,則可能會在一段時間後用完磁盤空間。這是黑客混淆你服務器的可能途徑。
我完全同意後半部分!由於POST數據沒有限制,它可能包含您不想存儲在日誌中的各種數據,包括密碼。在日誌中可能還有其他安全和大型數據。 – 2009-06-13 05:23:19
記錄密碼不是問題,您不是以純文本形式發送密碼,是嗎? – supo 2011-03-21 15:45:05
@supo:即使密碼是通過SSL加密的,他們仍然會以純文本格式登錄。但是我正在處理的特殊問題是填滿磁盤空間,而不是在日誌中顯示密碼。 – 2011-03-21 16:17:12
使用Apache的mod_dumpio。小心明顯的原因。
請注意,mod_dumpio stops logging binary payloads at the first null character。例如,上傳一個gzip'd文件的multipart/form-data
可能只會顯示mod_dumpio的前幾個字節。
另請注意,即使在/modules
文件夾中,Apache也可能不會在httpd.conf
中提及此模塊。只需手動添加LoadModule
就可以正常工作。
雖然回答遲到。該模塊可以:https://github.com/danghvu/mod_dumpost
一個更簡單的選項可能是在POST數據到達服務器之前記錄它。對於Web應用程序,我使用Burp Proxy並將Firefox設置爲HTTP/S代理,然後我可以實時觀看(並修改)線路上的數據。
對於不使用瀏覽器的API請求,SoapUI非常有用,可能會顯示類似的信息。我敢打賭,你可能可以配置SoapUI來通過Burp連接(只是猜測)。
您可以安裝mod_security
,放在/etc/modsecurity/modsecurity.conf
:
SecRuleEngine On
SecAuditEngine On
SecAuditLog /var/log/apache2/modsec_audit.log
SecRequestBodyAccess on
SecAuditLogParts ABIJDFHZ
您可以使用ModSecurity
查看POST數據。
安裝在Debian/Ubuntu的:
$ sudo apt install libapache2-mod-security2
使用推薦的配置文件:
$ sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
,並編輯以下行
SecRuleEngine DetectionOnly
SecAuditEngine RelevantOnly
到
SecRuleEngine On
SecAuditEngine On
刷新阿帕奇:
$ 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"}
相關問題記錄在ServerFault數據:http://serverfault.com/questions/51295/logging- http-post-in-apache – 2015-09-24 13:50:59