Instale a integração Request Variation Controller
Instale Request Variation Controller pelo Azion Marketplace e execute-a em uma application para contar quantas vezes um usuário altera argumentos.
Request Variation Controller conta quantas requisições diferentes um usuário faz em sequência para uma application e sinaliza o usuário que ultrapassa o máximo que você permite. São duas integrações que executam na mesma application, e ambas fazem parte das integrações do Marketplace. Na fase de resposta, o Hash Generator cria ou atualiza um cookie assinado que rastreia os argumentos que o usuário, ou a origem, envia entre as requisições. Na fase de requisição, o Hash Validator lê esse cookie, verifica o número de variações e marca a requisição quando o usuário ultrapassa o máximo.
Sete objetos precisam existir antes que uma requisição seja verificada: as duas functions instaladas, uma application com os módulos Functions e Application Accelerator ativados, uma function instance por integração e uma regra do Rules Engine por instância.
Pré-requisitos
- Uma conta Azion. Para entrar, consulte Como acessar o Azion Console.
- Uma application servida por um workload. Para criar uma, consulte Primeiros passos com Applications.
- Ativar um produto ou um módulo pode gerar custos de uso. Para mais informações, consulte Preços.
Instale as integrações
Cada instalação adiciona uma function à sua conta. Para instalar as duas pelo Azion Console:
Acesse Azion Console > Marketplace.
Digite variation no campo Search on Marketplace e selecione o card Request Variation Controller - Hash Generator. Navegar pelos cards leva à mesma página.
Volte ao Marketplace, selecione o card Request Variation Controller - Hash Validator e selecione Install.
Cada card mostra Successfully installed! e Latest version installed!, e as duas functions aparecem na lista Function do drawer Create Instance.
Ative o módulo Functions
Uma application executa uma function instalada somente quando o módulo Functions dela está ativado. A regra que executa o Hash Validator também usa o behavior Forward Cookies, que exige o módulo Application Accelerator. Para ativar os dois módulos:
Acesse Azion Console > Applications > sua application.
Na aba Main Settings, vá até a seção Modules.
O Azion Console confirma que a application foi atualizada.
Crie as function instances
Cada integração precisa da própria function instance, com os próprios argumentos. O Hash Generator executa na fase de resposta e o Hash Validator na fase de requisição. Para criar as duas instâncias na sua application:
Em Applications, selecione sua application e selecione a aba Functions Instances.
Uma application que ainda não tem instância oferece a mesma ação como Function Instance. O drawer Create Instance abre.
Em Name, digite um nome único que identifique a instância. Por exemplo: variation-generator.
Em Function, selecione a function Variation Request - Hash Generator. O editor Arguments é preenchido com os argumentos padrão da integração.
Em Arguments, digite os argumentos do Hash Generator descritos abaixo.
Repita estes passos com um nome como variation-validator, a function Variation Request - Hash Validator e os argumentos do Hash Validator.
As duas instâncias aparecem na aba Functions Instances com os nomes que você digitou.
Argumentos do Hash Generator
O Hash Generator executa na fase de resposta e recebe estes argumentos:
| Chave | Descrição |
|---|---|
cookie_name | O nome do cookie. O valor padrão é azn |
cookie_secret | A chave que criptografa o cookie assinado. O algoritmo de criptografia é AES-128, então a chave deve ter exatamente 16 caracteres |
cookie_max_age | O tempo até o cookie expirar. Sem valor, null ou nenhum, o cookie é um cookie de sessão. O valor padrão é 45 |
args_list | As variáveis do nginx analisadas na requisição do usuário. Cada alteração aumenta a contagem de alterações, e a contagem decide se o acesso é bloqueado ou permitido |
Argumentos do Hash Validator
O Hash Validator executa na fase de requisição e recebe estes argumentos:
| Chave | Descrição |
|---|---|
cookie_name | O nome do cookie. Deve ser o mesmo dos argumentos do Hash Generator |
cookie_secret | A chave secreta do cookie. Deve ser a mesma dos argumentos do Hash Generator |
max_variation | O número máximo de variações de qualquer tipo nos parâmetros |
max_unique_variation | O número máximo de variações únicas nos parâmetros |
O Hash Validator descriptografa o cookie assinado e verifica se um limite de variação foi atingido. Se foi, a function anexa um cabeçalho de requisição chamado [COOKIE_ NAME]-[VIOLATION TYPE]-[TRUE].
Tipos de violação
Uma violação assume um de três tipos. Os exemplos usam um cookie que muda de nenhum valor para A na primeira requisição, de A para B na segunda, para C na terceira, de B para C na quarta, de B para A na quinta e para A na sexta.
- All variations: conta cada vez que o valor do cookie mudou, incluindo valores repetidos. O exemplo tem 5 variações. Com o nome de cookie padrão, a violação adiciona o cabeçalho
http_cookie_name_any_variation_violationà requisição. - Unique variations: conta os valores distintos atribuídos ao cookie desde que ele foi criado. O exemplo tem 3, porque o cookie teve apenas
A,BeC. Com o nome de cookie padrão, a violação adiciona o cabeçalhohttp_cookie_name_unique_variation_violationà requisição. - Signature violation: ocorre quando a function não consegue descriptografar o cookie assinado, porque ele foi assinado com outra chave ou alterado no lado do cliente. Com o nome de cookie padrão, a violação adiciona o cabeçalho
http_cookie_name_signature_violationà requisição.
Crie as regras
Cada instância executa somente quando uma regra do Rules Engine a chama. A regra do Hash Generator executa na fase de resposta. A regra do Hash Validator executa na fase de requisição e adiciona o behavior Forward Cookies, que exige o módulo Application Accelerator. As duas regras abaixo correspondem a todas as requisições. Para criar as regras:
Em Applications, selecione sua application e selecione a aba Rules Engine.
Em Name, digite um nome para a regra. Por exemplo: Track request variations. A Description é opcional.
Na seção Phase, selecione Response Phase.
Na seção Criteria, mantenha a variável ${uri} e o operador starts with e digite / como argumento.
Na seção Behaviors, selecione Run Function e selecione a instância do Hash Generator pelo nome.
Selecione + Rule novamente. Digite um nome, selecione Request Phase e defina o mesmo critério.
Na seção Behaviors, selecione Run Function e selecione a instância do Hash Validator pelo nome.
Selecione Add Behavior e selecione Forward Cookies.
A aba Rules Engine lista uma regra na fase de resposta e uma na fase de requisição. Uma requisição que ultrapassa um limite de variação chega à sua application com o cabeçalho de violação.
Para conhecer cada critério e behavior que uma regra aceita, consulte Rules Engine para Applications.