我需要启用访问日志,但出于合规性原因,不能在访问日志中记录敏感的GET请求参数的数据。虽然我知道,我可以解析日志(事后)并清理它们,但这不是一个可接受的解决方案-因为出于合规性原因,日志不能被篡改。
http://www.example.com/resource?param1=123&sensitive_param=sensitive_data
如何防止“sensitive_data”参数值被写入日志?以下是一些想法:
- 在POST请求中发送--这不是JSONP的选项。
- 为“resource”使用新的位置规则,并将访问日志设置为使用不同格式的log_format(即不使用$remote_addr)。请参阅以下内容以供参考:http://nginx.org/en/docs/http/ngx_http_log_module.html
- 记录一个$sanitized_remote_addr,并在它进入日志之前设置它(以某种方式解析$remote_addr或其他东西?)。我们不确定这是否容易完成。
应该如何做到这一点?
2条答案
按热度按时间w80xi6nr1#
由于
log_format
模块只能在http
级别配置中使用,因此前面的答案不起作用。为了解决这个问题,我们可以从
location
指令中删除log_format
配置,并将其保留在http级别配置中。log_format
指令可以在我们的location
指令块中定义变量。所以最终的配置看起来像这样:
请注意,错误日志可能仍然会记录此信息。在location块中使用
error_logs off;
来禁用此功能(假设您可以在应用程序的其他位置记录这些错误)sxissh062#
到目前为止,我找到的解决方案是here。简而言之:
也许这曾经在某个时候起作用,现在它说:
或