# Use a integração Signed Cookies

**Signed Cookies** é uma integração *serverless*, dividida em duas partes, disponível no Marketplace da Azion.

Os cookies assinados são um tipo de cookie que tem uma camada extra de segurança. A assinatura de cookies significa que as informações que eles contêm são criptografadas e só podem ser lidas pelo site que os criou. Os cookies assinados são frequentemente usados para fins de autenticação. Por exemplo, para lembrar se um usuário fez login em um site. Isso permite que o site verifique se terceiros não interferiram ou alteraram os dados da sessão. Esta é uma defesa eficaz contra sequestro de sessão e outros ataques de segurança.

Os cookies assinados podem incluir um carimbo de data/hora ou data de validade, além de criptografia. Isso garante que os dados sejam válidos apenas por um tempo limitado. Em suma, os cookies assinados são uma ferramenta vital para os desenvolvedores web manterem a segurança e a integridade dos dados do usuário.

---

## Obtenha a integração

Essa integração é, na verdade, duas. A integração **Signed Cookies** é dividida em **Hash Generator** e Hash **Validator**.

Para instalar **Signed Cookies**, siga estas etapas:

1. Acesse o [Azion Console](/pt-br/documentacao/produtos/guias/como-acessar-o-azion-console/) > **Marketplace**.
2. Na homepage do Marketplace, procure pelo card da integração **Signed Cookies**.
  - Você pode procurar qualquer integração navegando pelos cards, usando os filtros ou digitando uma palavra-chave na barra de busca.
3. Depois de encontrar os cards referentes à integração Signed Cookies (*Hash Generator* e *Hash Validator*), selecione um para ser direcionado para a página da integração.
4. Na página da integração, clique no botão **Install**.

Aparecerá uma mensagem indicando que sua integração foi instalada com sucesso.

Você seguirá as mesmas etapas para instalar a segunda parte da integração, alterando apenas o nome da integração na busca ou qual você vai procurar manualmente pela página.

---

## Configure a integração

Você deve ter pelo menos uma application existente para incorporar a nova função de **Signed Cookies**.

:::tip
Para criar uma nova application, acesse a [seção Build](/pt-br/documentacao/produtos/guias/build/criar-uma-aplicacao/) para obter mais detalhes sobre este tópico.
:::

Para configurar sua integração, proceda da seguinte forma:

1. No canto superior esquerdo, selecione **Products menu** > **Applications** na seção de **Build**.
2. Na página de listagem de suas applications, selecione aquela que você criou para usar com a integração **Signed Cookies**.
3. Na aba **Main Settings**, sob a seção **Modules**, localize a opção **Functions** e ative-a para habilitar o uso de **Functions** em sua application.
4. Ainda sob **Modules**, localize a opção **Application Accelerator** e ative-a para habilitar a funcionalidade **Forward Cookies** para a sua aplicação.
  - Essa necessidade será abordada na [seção Rules Engine](#configure-uma-regra-no-rules-engine).
5. Clique no botão **Save**.

Você receberá uma mensagem de sucesso indicando que sua application foi atualizada.

:::caution[atenção]
Se qualquer produto ou módulo for ativado, pode gerar custos relacionados ao uso. Consulte a [página de preços](/pt-br/documentacao/produtos/precos/) para obter mais informações.
:::

---

## Instancie a integração

Para habilitar essa função, enquanto ainda estiver na página de **Applications**:

1. Selecione a aba **Functions Instances** na lista superior.
2. Clique no botão **+ Function Instance**.
3. Escolha um nome fácil de lembrar para sua função.
4. No menu suspenso, selecione a função **Signed Cookies**.
  - Esta ação irá carregar a aba **Arguments**.

:::note
Como você tem duas integrações, você deverá configurar duas vezes a aba **Args**, uma para a hash generator e outra para a hash validator.

Lembre-se de que a integração Signed Cookies é dividida em duas e que **Hash Generator deve ser executado na response phase** e **Hash ⁠Validator deve ser executado na request phase**.
:::

Para **Hash ⁠Generator**, os **Args** são:

```json
{
  "cookie_list": ["yummy_cookie", "tasty_cookie"],
  "cookie_secret": "ItIsASecret",
  "tampering_cookie_prefix": "tampering_protection"
}
```

Onde:

- `cookie_list`: define a lista de cookies que devem ser protegidos. Para cada cookie nesta lista, uma versão criptografada do cookie será anexada à resposta.
- `cookie_secret`: define uma senha para proteger o cookie criptografado contra a manipulação do lado do cliente.
- `tampering_cookie_prefix`: define o prefixo a ser usado no nome dos cookies criptografados.

Você deve prestar atenção aos possíveis valores adicionados ao campo `tampering_cookie_prefix`.

Por exemplo, se o valor deste argumento for `tampering_protection` e a função for proteger os cookies `yummy_cookie` e `tasty_cookie`, os cookies criptografados criados pela função serão nomeados `tampering_protection_yummy_cookie` e `tampering_protection_tasty_cookie`.

Se esse argumento não tiver um valor válido, o valor padrão chamado, `azion_tampering`, será usado. Portanto, neste caso, os cookies criptografados seriam `azion_tampering_yummy_cookie` e `azion_tampering_tasty_cookie`.

Para **Hash Validator**, os **Args** são:

```json
{
  "cookie_list": ["yummy_cookie", "tasty_cookie"],
  "cookie_secret": "ItIsASecret",
  "tampering_cookie_prefix": "tampering_protection",
  "tampering_violation_header_prefix": "azion-tampering-violation"
}
```

Estes são os mesmos campos que temos para Hash Generator, com a adição de mais um campo: `tampering_violation_header_prefix`, responsável por definir um prefixo para os cabeçalhos que a função anexará à requisição sempre que uma violação de cookie for identificada.

Você deve prestar atenção aos possíveis valores adicionados ao campo `tampering_violation_header_prefix`.

Por exemplo, os cabeçalhos `Cookie-Violation-Any`, `Cookie-Violation-Counter` e `Cookie-Violation-List` serão criados se o valor desse argumento for `Cookie-Violation`.

Se este argumento não tiver dados válidos, os padrões são `Azion-Tampering-Violation-Any`, `Azion-Tampering-Violation-Counter` e `Azion-Tampering-Violation-List`.

---

## Configure uma regra no Rules Engine

Agora, você deve configurar as regras com os *criteria* (critérios) e *behavior* (comportamento) que deseja aplicar para executar sua função.

Primeiro, você deverá configurar a **response phase** no **Rules Engine**.

Ainda na página de **Applications**, siga estes passos:

1. Selecione a aba **Rules Engine**.
2. Clique no botão **+ Rule Engine**.
3. Dê um nome fácil de lembrar à sua nova regra.
4. Selecione **Response Phase**.
5. Passe os *criteria* que você precisa para executar sua integração.
6. No campo de *behavior*, selecione **Run Function** no menu suspenso.
7. Selecione a função **Signed Cookies - Hash Generator** de acordo com o nome que você deu na etapa de instanciação.
8. Clique no botão **Save**

Agora, você deverá configurar a **request phase** no **Rules Engine**.

Ainda na página de **Applications**, siga estes passos:

1. Selecione a aba **Rules Engine**.
2. Clique no botão **New Rule**.
3. Dê um nome fácil de lembrar à sua nova regra.
4. Selecione **Request Phase**.
5. Passe os *criteria* que você precisa para executar sua integração.
6. No campo de *behavior*, selecione **Run Function** no menu suspenso.
7. Selecione a função **Signed Cookies - Hash Validator** de acordo com o nome que você deu na etapa de instanciação.
   - Você precisará de um *segundo behavior* para a função **Signed Cookies - Hash Validator**: **Forward Cookies**.
8. Para adicioná-lo, clique no botão **+ Add Behavior** e selecione a opção **Forward Cookies** no menu suspenso.
9. Clique no botão **Save**.

Pronto. Você instanciou com sucesso suas duas integrações e agora sua aplicação está protegida contra invasores.

---