Nós (como todos) sabemos o quão importante o desempenho é para o sucesso contínuo dos negócios digitais. Enquanto aqueles de nós que foram criados com conexões discadas e downloads que duram horas tendem a ser mais tolerantes quando se trata de desempenho, nossos filhos nativos digitais não são tão generosos. Eles esperam respostas instantâneas e downloads rápidos.
A prova da nossa impaciência está nos números – mais de 80% de nós já excluímos um aplicativo por causa de baixo desempenho . Alguns de nós — três em cada dez — estão até dispostos a pagar pelo privilégio de nossos aplicativos serem extremamente rápidos.
Mas somos difíceis de agradar, não importa a qual geração tecnológica pertencemos. Não ouse ignorar a segurança enquanto você faz esse aplicativo ficar mais rápido. Se você fizer isso e nossos dados forem violados, faremos mais do que apenas excluir seu aplicativo.
Cabe, então, aos profissionais de TI – especialmente aqueles que praticam segurança – equilibrar a demanda por desempenho com a necessidade de segurança. Os aplicativos devem ser rápidos e seguros.
Uma das maneiras pelas quais mais da metade das organizações conseguem aplicativos mais seguros é usando um firewall de aplicativo da web (WAF) – entre outros serviços de aplicativo – para proteger os aplicativos contra ataques. Eles fazem isso de duas maneiras:
Primeiro, eles verificam as solicitações de entrada para detectar qualquer atividade maliciosa. Segundo, eles inspecionam as respostas de saída. Não é surpresa que as organizações que sempre aplicam essas táticas de segurança estejam entre aquelas com maior confiança em resistir a um ataque de aplicativo.
Usando um WAF, você pode inspecionar cada detalhe de uma solicitação e uma resposta. Você pode analisar, separar, distorcer e modificar o conteúdo como quiser.
Mas só porque você pode, não significa que você deva.
A segurança não é gratuita. São necessários ciclos de CPU e memória para inspecionar o tráfego do aplicativo com o tipo de atenção necessária para encontrar ataques ou evidências de uma violação.
É por isso que é importante equilibrar segurança com desempenho. Cada microssegundo extra que você gasta escaneando ou limpando é um microssegundo extra que os usuários devem esperar por essa resposta.
E eles se somam.
Afinal, é uma questão de física que leva uma série de microssegundos para que os pacotes passem por uma rede e voltem. Demora mais alguns microssegundos para estabelecer uma conexão. Mais alguns para processar... você entendeu. Tudo o que você faz leva tempo, e quanto mais tempo você leva, mais impacientes seus usuários ficam.
Alguns tradicionalmente jogam o bebê fora junto com a água do banho quando se trata desse conflito. Eles desligam a segurança até que o desempenho seja aceitável. Mas essa não é a resposta certa. Existe um equilíbrio que pode satisfazer tanto a necessidade de segurança quanto a demanda por desempenho.
Mediante solicitação, sinta-se à vontade para realizar análise e verificação em nível de protocolo. Inspecione a carga e procure por quaisquer sinais de ataque. Primeiro, faça digitalizações baseadas em assinaturas e depois faça comparações baseadas em texto. As verificações baseadas em assinaturas, quando possível, melhoram o desempenho da segurança porque você não precisa analisar e comparar. É apenas uma comparação direta e é um processo bem rápido.
Na resposta, não ceda à tentação de analisar e colocar o conteúdo sob um microscópio. É preciso haver algum nível de confiança com os desenvolvedores aqui, de que o JSON está formatado corretamente ou que o XML segue o esquema apropriado. Seja realista, se houver um erro de protocolo ou formato aqui, o usuário descobrirá. Essa é uma preocupação do desenvolvedor, geralmente não é um risco à segurança.
O que é um risco de segurança é a inclusão de dados confidenciais – números de cartão de crédito ou de conta, números de previdência social, endereços de e-mail, talvez. Números e dados com padrões bem definidos que podem ser rapidamente escaneados e ocultados nos dados. Assim como nas varreduras baseadas em assinaturas, você está fazendo correspondência de padrões aqui, e os serviços de segurança ficaram muito bons em executá-los o mais rápido possível.
O comprimento do conteúdo também é algo que você vai querer verificar, se possível. Vários exploits de alto perfil foram identificados simplesmente pela quantidade de conteúdo retornado. Se você sabe que uma solicitação específica deve retornar apenas cerca de 1K de dados, então uma resposta de 4K provavelmente deve disparar um alarme em algum lugar. É uma verificação simples que leva muito menos tempo do que analisar e contar registros de dados.
Uma boa regra prática é sempre obedecer à Regra de Segurança Zero na solicitação e verificar tudo o que puder quando houver entrada do usuário presente. Na saída, procure por indicadores de uma violação em andamento e ofusque dados confidenciais, mas não perca tempo se preocupando com formatos de dados e conformidade de esquema. Deixe que os desenvolvedores se preocupem se formataram a resposta corretamente. Essa é a competência deles, não sua.
Segurança e desempenho podem ser equilibrados, desde que você não sacrifique um pelo outro. E isso significa em ambas as direções. Não abra mão da segurança em troca do desempenho, mas não despreze o desempenho em troca de segurança (potencialmente desnecessária).
Se você usar a segurança estrategicamente para evitar explorações e detectar violações, poderá atingir o equilíbrio com o desempenho necessário para manter os usuários satisfeitos e os dados e aplicativos seguros.