Posso configurar o Apache httpd para remover/substituir todos os cabeçalhos de solicitação que correspondam a um padrão?

Posso configurar o Apache httpd para remover/substituir todos os cabeçalhos de solicitação que correspondam a um padrão?

Estou usando o Apache httpd como proxy reverso na frente de um aplicativo da web. A autenticação é realizada por um módulo (mod_auth_mellon), que define diversas variáveis ​​de ambiente de solicitação com detalhes sobre o usuário autenticado (nome de usuário, nome de exibição e assim por diante).

Eu uso mod_headers para remover cabeçalhos da solicitação recebida e substituí-los pelo valor das variáveis ​​de ambiente da solicitação que foram definidas por mod_auth_mellon.

RequestHeader unset mellon_uid
RequestHeader set mellon_uid "%{mellon_uid}e" env=mellon_uid

Assim, qualquer cabeçalho fornecido pelo cliente mellon_uidé descartado. Se mod_auth_mellon considerar que o usuário está logado, um novo mellon_uidcabeçalho de solicitação será adicionado à solicitação que será enviada posteriormente para o aplicativo da web.

Até agora, tornei isso gerenciável usando mod_macro:

Use Attribute uid
Use Attribute display_name
Use Attribute email

... e assim por diante, onde Attributeestá uma macro que se expande para as duas RequestHeaderdiretivas acima para o atributo fornecido.

No entanto, alguns detalhes do usuário têm valores múltiplos, para os quais mod_auth_mellon define múltiplas variáveis ​​de ambiente de solicitação no formato:

mellon_foo_0 = first
mellon_foo_1 = second
mellon_foo_2 = third
mellon_foo_N = 3

Como o número de valores de um atributo pode variar, não posso confiar em uma lista estática de variáveis ​​para processar dessa forma.

Eu gostaria de evitar o uso de MellonMergeEnvVars, que definiria o seguinte:

mellon_foo = first;second;third
mellon_foo_N = 3

... porque isso significa que o aplicativo da web agora precisa lidar com a complexidade de analisar corretamente o mellon_foocabeçalho da solicitação, lidar com valores que contêm ponto e vírgula, etc. Na verdade, não está claro para mim se mod_auth_mellon executa qualquer escape, o que torna a análise inequívoca impossível (se eu estiver certo...)

Responder1

Eu acho que contanto que você olhe apenas para os primeiros mellon_foo_Nvalores, não deve haver nenhum risco aqui, porque mod_auth_mellon sempre definirá esses valores sozinho, substituindo quaisquer valores que o usuário possa tentar enviar. Ele também deve sempre ser definido mellon_foo_N, mas você sempre pode desmarcá-lo inicialmente para ter certeza.

informação relacionada