> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Filtrar parâmetros de requisição

Toda vez que uma requisição é feita no seu aplicativo, o AppSignal coleta os parâmetros enviados com essa requisição.
Isso inclui dados de formulário (POST), parâmetros de consulta e chaves em rotas (por exemplo, /user/:id/) em alguns frameworks.

Esses dados podem conter informações identificáveis do usuário, como nomes, endereços de e-mail, senhas, códigos de autenticação de dois fatores, tokens de API, etc.
Para proteger os dados sensíveis do seu aplicativo, você deve garantir que esses dados sejam filtrados antes de serem enviados aos servidores do AppSignal. Dessa forma, seu aplicativo não vaza nenhum dado sensível.

<Tip>
  Leia mais sobre filtragem de parâmetros em nossa documentação de [Parameter
  Filtering][parameter filtering].
</Tip>

<Warning>
  Sua aplicação não deve coletar informações de identificação do usuário (como
  nomes pessoais, endereços de e-mail, senhas, etc.). Use as ferramentas descritas
  neste guia para limitar e filtrar esses dados.
</Warning>

## Filtragem de parâmetros

A filtragem básica de parâmetros nas integrações do AppSignal funciona com uma denylist, uma lista de chaves para filtrar e não enviar.
Você pode definir uma opção "filter parameters" na configuração do AppSignal com uma lista de chaves de parâmetro a serem filtradas.

Os valores dos parâmetros que você configurou para serem filtrados serão substituídos pelo valor `[FILTERED]`. Dessa forma, a lista de parâmetros nos dados do app no AppSignal.com
ainda inclui a chave do parâmetro, mas não o valor, para que você ainda tenha visibilidade de que um valor teve dados potencialmente sensíveis filtrados antes de serem enviados ao AppSignal.

<Tip>
  Algumas [chaves de parâmetros também são removidas pelo nosso
  processador](/application/parameter-filtering#processor-parameter-filtering)
  em nossos servidores.
</Tip>

### Exemplo

Por exemplo, uma aplicação com esta configuração do AppSignal:

<CodeGroup>
  ```yaml YAML theme={null}
  filter_parameters: ["password"]
  ```
</CodeGroup>

Resulta nesta visualização para os parâmetros de uma requisição web no AppSignal.com:

<CodeGroup>
  ```json JSON theme={null}
  {
    "password": "[FILTERED]"
  }
  ```
</CodeGroup>

Este guia mostrará como configurar a denylist de filtragem de parâmetros do seu aplicativo, com base na linguagem que seu aplicativo usa:

* [Ruby](#ruby)
* [Elixir](#elixir)
* [Node.js](#nodejs)
* [Python](#python)
* [Go](#go)
* [Java](#java)
* [PHP](#php)

## Ruby

A gem [AppSignal for Ruby](/ruby) tem dois métodos de filtragem de parâmetros:

* Se seu app usa Rails, você pode usar a [configuração do Rails diretamente](/guides/filter-data/filter-parameters#rails-parameter-filtering).
* Se seu app usa outro framework, como Sinatra ou Padrino, você pode usar a [filtragem nativa do AppSignal](#rails-parameter-filtering) em vez disso.

### Filtragem de parâmetros do AppSignal {/* id: appsignal-parameter-filtering */}

Use a denylist para filtragem básica de parâmetros. Esta filtragem de parâmetros é aplicada
a quaisquer parâmetros de consulta em uma requisição HTTP e qualquer argumento para jobs em segundo plano.

Esta filtragem suporta filtragem baseada em chaves para hashes, que terão seus valores substituídos por `[FILTERED]`. Há suporte para hashes aninhados e hashes aninhados em arrays. Qualquer hash encontrado nos seus parâmetros será filtrado.

Para usar esta filtragem, adicione o seguinte ao seu arquivo `config/appsignal.yml`, no grupo de ambiente em que você deseja aplicar. O valor de [`filter_parameters`](/ruby/configuration/options#option-filter_parameters) é um array de strings.

<CodeGroup>
  ```ruby Ruby theme={null}
  Appsignal.configure do |config|
    config.filter_parameters << "password"
  end
  ```

  ```yaml YAML theme={null}
  production:
    filter_parameters:
      - password
      - confirm_password
  ```
</CodeGroup>

### Filtragem de parâmetros do Rails

Felizmente, o Rails fornece um mecanismo de filtragem de parâmetros de requisição para limpar dados dos arquivos de log.

O AppSignal aproveita esse mecanismo de parâmetros de requisição para que tanto seus logs de requisição quanto os dados de requisição enviados ao AppSignal sejam filtrados por uma única configuração. Suponha que o aplicativo deva filtrar as mesmas chaves para parâmetros de requisição e argumentos de job reportados para diferentes gems Ruby, como argumentos de job do Sidekiq. Nesse caso, é necessário configurar a filtragem de parâmetros no AppSignal usando a [opção `filter_parameters`](/ruby/configuration/options#option-filter_parameters) para incluir também as chaves definidas na configuração do Rails, pois ele não reutilizará a configuração de filtragem de parâmetros do Rails para essas gems.

#### Denylist: filtrar chaves específicas

Existem duas maneiras de determinar quais chaves são filtradas. A primeira é adicionar chaves específicas à denylist. No exemplo abaixo, o valor de `:secret` em qualquer post no app será substituído por `[FILTERED]`.

<CodeGroup>
  ```ruby Ruby theme={null}
  module Blog
    class Application < Rails::Application
      config.filter_parameters << :secrets
    end
  end
  ```
</CodeGroup>

A desvantagem dessa abordagem é que é mais complicado lidar com aplicativos maiores e mais complexos, especialmente ao usar recursos como `accepts_nested_attributes_for`. Se esquecermos de adicionar chaves explicitamente, elas não serão filtradas.

#### Allowlist: permitir chaves específicas

Usar uma lambda em vez de uma lista de chaves oferece mais flexibilidade. No exemplo a seguir, usamos uma lambda para configurar uma allowlist em vez de uma denylist.

<CodeGroup>
  ```ruby Ruby theme={null}
  ALLOWED_KEYS_MATCHER = /((^|_)ids?|action|controller|code$)/.freeze
  SANITIZED_VALUE = '[FILTERED]'.freeze

  Rails.application.config.filter_parameters << lambda do |key, value|
    unless key.match(ALLOWED_KEYS_MATCHER)
      value.replace(SANITIZED_VALUE) if value.is_a?(String)
    end
  end
  ```
</CodeGroup>

Você pode fazer com que a lambda verifique qualquer chave que desejar, para que possa determinar e usar um método de filtragem que melhor atenda às necessidades do seu aplicativo.

Mais informações sobre filtragem de parâmetros podem ser encontradas nos guias do Rails sobre [ActionController](http://guides.rubyonrails.org/action_controller_overview.html#parameters-filtering).

## Elixir

Se o seu app usa Phoenix, você pode usar a [filtragem de parâmetros do Phoenix](/guides/filter-data/filter-parameters#phoenix-filter_parameters-configuration). Você pode usar a filtragem nativa do AppSignal se seu app usar um framework Elixir diferente.

### Filtragem de parâmetros do AppSignal {/* id: elixir-appsignal-parameter-filtering */}

Use a denylist para filtragem básica de parâmetros. Esta filtragem de parâmetros é aplicada
a quaisquer parâmetros de consulta em uma requisição HTTP.

Configure a filtragem de parâmetros usando a [opção de configuração `filter_parameters`](/elixir/configuration/options#option-filter_parameters). O valor de filter\_parameters é uma lista de strings.

<CodeGroup>
  ```elixir Elixir theme={null}
  config :appsignal, :config,
    filter_parameters: ["password", "secret"]
  ```
</CodeGroup>

### Configuração filter\_parameters do Phoenix

Use a filtragem de parâmetros do Phoenix para centralizar sua configuração, que é usada para manter informações sensíveis fora dos logs. O AppSignal seguirá essas regras de filtragem.

<CodeGroup>
  ```elixir Elixir theme={null}
  config :phoenix,
    :filter_parameters, ["password", "secret"]
  ```
</CodeGroup>

Se a opção de configuração `filter_parameters` não estiver definida, o Phoenix usará como padrão `["password"]`. Isso significa que um app Phoenix não enviará nenhuma senha ao AppSignal sem nenhuma configuração.

## Node.js

Use a denylist `filterParameters` para filtragem básica de parâmetros. Esta filtragem é aplicada a todos os parâmetros de uma requisição HTTP.

Você pode configurar a filtragem de parâmetros usando a [opção de configuração `filterParameters`](/nodejs/3.x/configuration/options#option-filterparameters). O valor de `filterParameters` é um array de strings.

<CodeGroup>
  ```javascript Node.js theme={null}
  const { Appsignal } = require("@appsignal/nodejs");

  new Appsignal({
    // Outras opções de configuração
    filterParameters: ["password", "secret"],
  });
  ```
</CodeGroup>

## Python

Use a denylist `filter_parameters` para filtragem básica de parâmetros. Esta filtragem é aplicada a todos os parâmetros de uma requisição HTTP.

Você pode configurar a filtragem de parâmetros usando a [opção de configuração `filter_parameters`](/python/configuration/options#option-filter_parameters). O valor de `filter_parameters` é um array de strings.

<CodeGroup>
  ```python Python theme={null}
  from appsignal import Appsignal

  appsignal = Appsignal(
      # Outras configurações
      filter_parameters: ["password", "secret"]
  )
  ```
</CodeGroup>

## Go

Para Go, reportamos os parâmetros de requisição como parâmetros de consulta (`?query=text`) e dados de payload (payload de requisição POST).

Use a [denylist `filter_request_query_parameters`](/go/configuration/options#option-filter_request_query_parameters) para filtragem de parâmetros de consulta de requisição. Defina a [opção `send_request_query_parameters`](/go/configuration/options#option-send_request_query_parameters) como `false` para não enviar nenhum parâmetro de consulta de requisição.

Use a [denylist `filter_request_payload`](/go/configuration/options#option-filter_request_payload) para filtragem de dados de payload de requisição. Defina a [opção `send_request_payload`](/go/configuration/options#option-send_request_payload) como `false` para não enviar nenhum dado de payload de requisição.

Veja a [página de configuração do Go](/go/configuration/options) para mais informações sobre como configurar o OpenTelemetry para apps Go.

<CodeGroup>
  ```go Go theme={null}
  res := resource.NewWithAttributes(
  	attribute.StringSlice("appsignal.config.filter_request_query_parameters", []string{"password", "cvv"}),
  	attribute.StringSlice("appsignal.config.filter_request_payload", []string{"password", "cvv"}),
  )
  ```
</CodeGroup>

## Java

Para Java, reportamos os parâmetros de requisição como parâmetros de consulta (`?query=text`) e dados de payload (payload de requisição POST).

Use a [denylist `filter_request_query_parameters`](/java/configuration/options#option-filter_request_query_parameters) para filtragem de parâmetros de consulta de requisição. Defina a [opção `send_request_query_parameters`](/java/configuration/options#option-send_request_query_parameters) como `false` para não enviar nenhum parâmetro de consulta de requisição.

Use a [denylist `filter_request_payload`](/java/configuration/options#option-filter_request_payload) para filtragem de dados de payload de requisição. Defina a [opção `send_request_payload`](/java/configuration/options#option-send_request_payload) como `false` para não enviar nenhum dado de payload de requisição.

Veja a [página de configuração do Java](/java/configuration/options) para mais informações sobre como configurar o OpenTelemetry para apps Java.

<CodeGroup>
  ```bash Bash theme={null}
  function encode() {
    echo -n "$@" | sed 's/,/%2C/g'
  }

  export OTEL_RESOURCE_ATTRIBUTES="\
    appsignal.config.filter_request_query_parameters=$(encode "password,cvv"),\
    appsignal.config.filter_request_payload=$(encode "password,cvv"),\
    ..."
  ```
</CodeGroup>

## PHP

Para PHP, reportamos os parâmetros de requisição como parâmetros de consulta (`?query=text`) e dados de payload (payload de requisição POST).

Use a [denylist `filter_request_query_parameters`](/php/configuration/options#option-filter_request_query_parameters) para filtragem de parâmetros de consulta de requisição. Defina a [opção `send_request_query_parameters`](/php/configuration/options#option-send_request_query_parameters) como `false` para não enviar nenhum parâmetro de consulta de requisição.

Use a [denylist `filter_request_payload`](/php/configuration/options#option-filter_request_payload) para filtragem de dados de payload de requisição. Defina a [opção `send_request_payload`](/php/configuration/options#option-send_request_payload) como `false` para não enviar nenhum dado de payload de requisição.

Veja a [página de configuração do PHP](/php/configuration/options) para mais informações sobre como configurar o AppSignal para PHP.

<CodeGroup>
  ```php PHP theme={null}
  return [
      'filter_request_query_parameters' => ['password', 'cvv'],
      'filter_request_payload' => ['password', 'cvv'],
      // ... outras opções
  ];
  ```
</CodeGroup>

[parameter filtering]: /application/parameter-filtering.html
