Используя Apache CustomLog для регулярного выражения замены, получим неопределенную ошибку символа 's' - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь очистить журналы apache конфиденциальных данных, которые передаются в параметрах строки запроса. Я знаю, что это не хорошо, это не может быть изменено.

Исходя из этого вопроса: https://stackoverflow.com/a/9473943/1046387

Это по моему apache.conf

CustomLog "|/bin/sed -u -E s/'api_key=[^& \t\n]*'/'api_key=\[FILTERED\]'/g >> /var/log/apache2/access.log" combined

Я получаю эту ошибку:

AH00106: piped log program '/bin/sed -u -E s/'api_key=[^& \\t\\n]*'/'api_key=\\[FILTERED\\]'/g >> /var/log/apache2/access.log' failed unexpectedly
/bin/sed: -e expression #1, char 14: unterminated `s' command

Несмотря на возможность непосредственного запуска команды на поле:

$ echo "api_key=343" | /bin/sed -u -E s/'api_key=[^& \t\n]*'/'api_key=\[FILTERED\]'/g
api_key=[FILTERED]

Похоже, apache не передает команду sed правильно, поэтому отсутствуют некоторые аргументы. Какая-то проблема с escape-последовательностями или что-то?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...