Como utilizar a solução Request Variation Controller através do Marketplace da Azion
A solução Request Variation Controller é, na verdade, um conjunto de duas soluções que trabalham de forma síncrona para proteger seus ativos online.
Na fase de resposta, o hash generator cria um cookie assinado que rastreia os diferentes argumentos que o usuário (ou a origem) está usando na requisição. Este cookie será usado pela a segunda solução, hash validator, que verifica o número de variações feitas e bloqueia o acesso à origem sempre que o usuário excede o número máximo permitido.
Obtendo a solução
Seção intitulada Obtendo a soluçãoA solução Request Variation Controller é uma solução serverless disponível no Marketplace da Azion. Lembre-se de que essa solução é dividida em duas partes, então para executá-la você precisará instalar ambas: hash generator e hash validator.
Com a ajuda desta solução, um cookie assinado pode ser criado ou atualizado, contendo detalhes sobre quantas solicitações diferentes foram feitas em sucessão para uma edge application.
Para obter a solução, siga os passos abaixo:
- Faça login na sua conta do Real-Time Manager (RTM).
- Se você ainda não tiver uma conta, crie uma visitando a página de inscrição.
- No canto superior esquerdo da página, selecione Products menu > Marketplace.
- Selecione a caixa de pesquisa e digite ”variation” ou navegue pelos cards para encontrar as duas soluções que compõem a Request Variation Controller.
- Depois de encontrar os cards para a solução: Request Variation Controller - Hash Generator e Request Variation Controller - Hash Validator, selecione um para ir para a página da solução.
- Na página da solução, procure a seção Subscribe for, no canto inferior direito.
- Clique no botão Get it now.
Você deve seguir os mesmos passos para instalar a segunda solução da sua Request Variation Controller, apenas alterando o nome da solução.
Em ambos os casos, após clicar no botão Get it now, você verá uma mensagem indicando que sua solução foi instalada com sucesso e está pronta para uso.
Usando a solução
Seção intitulada Usando a soluçãoDepois de obter sua solução no Marketplace, ela estará disponível na sua lista de edge functions. Para usar a solução, será necessário criar uma edge application.
Você tem três opções para criar uma edge application:
- Visitando a documentação de ponto de partida.
- Através do RTM, no canto superior esquerdo da página, selecionando Products menu > Edge Application e seguindo as instruções.
- Utilizando uma edge application já existente.
Configurando a sua solução
Seção intitulada Configurando a sua soluçãoPara configurar sua solução, siga estes passos:
- No canto superior esquerdo, selecione Products menu > Edge Application na seção BUILD.
- Na página de listagem das suas edge applications, selecione aquela que você criou para usar com a solução Request Variation Controller.
- Na página da aplicação, na guia Main Settings, localize o botão Functions e ative-o para habilitar funções em sua edge application.
- Ainda na página da aplicação, na guia Main Settings, localize o botão Application Acceleration e ative-o para habilitar a funcionalidade Forward Cookies para sua aplicação; a necessidade desse passo será abordada na seção Rules Engine.
- Clique no botão Save.
Você receberá uma mensagem de sucesso indicando que sua edge application foi atualizada.
Instanciando a solução
Seção intitulada Instanciando a soluçãoPara habilitar esta solução, ainda na página da sua edge application, siga estes passos:
- Selecione a guia Functions no menu superior.
- Clique no botão Add Function.
- Escolha um nome fácil de lembrar para sua função.
- No menu suspenso de funções, selecione a função Request Variation Controller.
Essa ação irá carregar a solução, mostrando um formulário com o código-fonte dela e, logo acima, duas abas: Code e Args. Ao clicar na aba Code, você poderá navegar pelo código, mas não poderá alterá-lo.
Como você tem duas soluções, terá que configurar duas abas Args, uma para a response phase e outra para a request phase.
Para a response phase, os Args são:
{ "cookie_name": "azn", "cookie_secret": "1234567890123456", "cookie_max_age": 45, "args_list": ["http_x_something", "http_x_another_thing", "request_body_userid"]}
Onde:
cookie_name
: define o nome do cookie. O valor padrão é azn
.
cookie_secret
: define a chave usada para criptografar o cookie assinado. Devido ao algoritmo de criptografia usado aqui, o AES-128, esta chave deve ter exatamente 16 caracteres.
cookie_max_age
: define o tempo de expiração do cookie. Se você não definir nenhum tempo (passando um valor nulo ou nenhum valor), o cookie será um cookie de sessão. O valor padrão é 45
.
args_list
: define a lista de variáveis do Nginx que serão analisadas na solicitação do usuário. Sempre que essas variáveis mudarem, a contagem de mudanças será aumentada. Esses parâmetros serão usados para bloquear ou permitir o acesso.
Para a request phase, os Args são:
{"cookie_name": "azn","cookie_secret": "1234567890123456","max_variation": 6,"max_unique_variation": 2}
Onde*:
cookie_name
: define o nome do cookie. Deve ser o mesmo que foi definido na response phase.
cookie_secret
: define a chave secreta para o cookie. Deve ser a mesma que foi definida na response phase.
max_variation
: define o número máximo de qualquer tipo de variação nos parâmetros.
max_unique_variation
: define o número máximo de variações únicas nos parâmetros. Esta função descriptografa o cookie assinado e verifica se alguma variante do cookie ocorreu. Caso tenha ocorrido, um novo cabeçalho de solicitação com o nome [COOKIE_NAME]-[VIOLATION-TYPE)]-[TRUE]
será anexado à request.
As possíveis violações podem assumir três valores:
Seção intitulada As possíveis violações podem assumir três valores:-
All variations: independentemente de haver valores repetidos, conta-se o número de vezes que o valor do cookie foi alterado. Por exemplo, se o valor do cookie mudasse de “nada” para “A” no primeiro pedido, de “A” para “B” no segundo, depois para “C” no terceiro, então de “B” para “C” no quarto, de “B” para “A” no quinto, e finalmente para “A” no sexto pedido, o número total de variações seria 5. Se o cookie tiver o nome padrão, o cabeçalho da violação que é adicionado ao pedido quando esta violação ocorre é
http_cookie_name_any_variation_violation
. -
Unique variations: conta o número de valores distintos que foram atribuídos ao cookie desde sua criação. Considerando que o cookie só tenha como valores distintos “A,” “B,” e “C”, a variação única, usando o mesmo exemplo acima, seria, portanto, 3. assumindo que o cookie tenha o nome padrão, quando esta violação ocorrer, um cabeçalho de violação chamado
http_cookie_name_unique_variation_violation
será adicionado a request. -
Signature violation*: Quando a função não conseguir decifrar o cookie assinado (por exemplo, porque foi assinado com uma chave diferente ou porque o cookie foi alterado no lado do cliente), esta violação será acionada. Assumindo que o cookie tenha o nome padrão, quando esta violação for acionada, o pedido terá o cabeçalho de violação
http_cookie_name_signature_violation
adicionado a ele.
Configurando o Rules Engine
Seção intitulada Configurando o Rules EngineAinda na página Edge Application, na guia Rules Engine, você deverá configurar as regras (criteria e behavior) que deseja aplicar para executar sua solução.
Primeiro, você deve configurar a sua response phase dentro do Rules Engine.
Para fazer isso, siga estes passos:
- Selecione a guia Rules Engine.
- Clique no botão New Rule e selecione Response Phase.
- Dê um nome fácil de lembrar à sua regra.
- Informe todos os critérios (criteria) que você precisa para executar sua solução.
- No campo behavior, selecione Run Function no menu suspenso e então selecione a função Request Variation Controller - Hash Generator, de acordo com o nome que você deu na etapa de instanciação.
- Clique no botão Save.
Agora, você deve configurar a request phase.
Para fazer isso, siga estes passos:
- Selecione a guia Rules Engine.
- Clique no botão New Rule e selecione Request Phase.
- Dê um nome fácil de lembrar à sua regra.
- Informe os critérios (criteria) que você precisa para executar sua solução.
- No campo behavior, selecione Run Function no menu suspenso e então selecione a função Request Variation - Hash Validator, de acordo com o nome que você deu no passo de instanciação.
- Você precisará de um segundo behavior para que a solução Request Variation Controller funcione: Forward Cookies. Para adicionar este behavior, clique no botão
+
e selecione a opção Forward Cookies no menu suspenso.- Lembre-se que para poder selecionar esse comportamento, você deve ter o Application Acceleration habilitado na sua edge application, conforme descrito na seção 3 deste guia.
- Clique no botão Save.
Pronto. Você instanciou com sucesso suas duas soluções e agora você está protegido contra ataques de bots maliciosos.