我正在为我们的应用程序开发一个新的RESTful Web服务.
在某些实体上执行GET时,客户端可以请求实体的内容.如果他们想要添加一些参数(例如排序列表),他们可以在查询字符串中添加这些参数.
或者,我希望人们能够在请求正文中指定这些参数. HTTP/1.1似乎没有明确禁止这一点.这将允许他们指定更多信息,可以更容易指定复杂的XML请求.
我的问题:
我需要在我的apache日志中排除一些敏感的细节,但我想保留日志和uri的内容.是否可以在我的访问日志中实现以下内容:
127.0.0.1 - - [27/Feb/2012:13:18:12 +0100] "GET /api.php?param=secret HTTP/1.1" 200 7600 "http://localhost/api.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"
Run Code Online (Sandbox Code Playgroud)
我想用"[FILTERED]"替换"秘密",如下所示:
127.0.0.1 - - [27/Feb/2012:13:18:12 +0100] "GET /api.php?param=[FILTERED] HTTP/1.1" 200 7600 "http://localhost/api.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"
Run Code Online (Sandbox Code Playgroud)
我知道我可能应该使用POST发送此变量,但损坏已经完成.我查看了http://httpd.apache.org/docs/2.4/logs.html和LogFormat,但找不到任何使用正则表达式或类似方法的可能性.有什么建议?
[编辑]
如果您有可能选择,请不要将敏感变量作为GET参数发送.