DEV Community

Cover image for How to Secure Your API Against Unauthorized Requests

How to Secure Your API Against Unauthorized Requests

TiagoMabango on January 22, 2025

APIs are critical components of modern applications, enabling communication between different systems. However, they are also frequent targets for ...
Collapse
 
marciopedrocomba profile image
marciopedrocomba • Edited

Excelente material mas gostaria de adicionar que configurar medidas de segurança, como rate limiting por exemplo, no proxy em vez do servidor de aplicação (como .Net no exemplo) oferece várias vantagens:

Melhor Performance: O proxy é otimizado para lidar com grandes volumes de requisições, aliviando a carga do servidor de aplicação.

Controle Centralizado: Permite gerenciar e aplicar regras de segurança de forma consistente em sistemas distribuídos.

Maior Segurança: Bloqueia tráfego excessivo ou malicioso antes que alcance o servidor, reduzindo vulnerabilidades.

Facilidade de Configuração: Ferramentas como Nginx oferecem módulos prontos, evitando a necessidade de escrever lógica personalizada.

Políticas Avançadas: Suporte a limites dinâmicos, baseados em IP, cabeçalhos ou chaves de API, além de permitir "bursts" temporários.

Escalabilidade: Ajuda a manter o sistema eficiente ao adicionar novos servidores, sem necessidade de sincronizar estados.

Código Mais Limpo: A separação de responsabilidades mantém a lógica de segurança fora do código da aplicação.

Embora a aplicação também possa implementar medidas específicas, como limites baseados em usuários ou lógica de negócios, o uso de um proxy é mais eficiente, seguro e fácil de manter.

Collapse
 
tiagomabango profile image
TiagoMabango

O uso do proxy é uma abordagem muito boa, mas devemos sempre prestar atenção natureza do projecto.

Se for um projecto que tem a margem que crescer em cada ano, a abordagem mais acertiva é usar proxy mas em sistema em ecossistemas pequeno, usar proxy acaba não batendo muito certo.

Muito obrigado pela contribuição, @marciopedrocomba !

Collapse
 
marciopedrocomba profile image
marciopedrocomba • Edited

Certo @tiagomabango mas vale lembrar que hoje em dia usar um proxy é muito barato e fora as questões de segurança você tem ganho de alto throughput, baixa latência, tens a questão de lidar com requisições em paralelo sem sobre carregar a tua aplicação, cache e muito mais. Então usar um proxy independente do tamanho do projecto é um must nos dias de hoje

Thread Thread
 
tiagomabango profile image
TiagoMabango

@marciopedrocomba, um ponto muito importante!.

Obrigado, tomei notado...

Collapse
 
artydev profile image
artydev

Thank you very much, very instructfull article

Collapse
 
tiagomabango profile image
TiagoMabango

Thanks, is very good to know that!

Collapse
 
kwnaidoo profile image
Kevin Naidoo

Nice! This is a good start.

If I may make one suggestion. The thing with bad IPs is that they will DDOS your app by just making several requests in a short space of time. Each request will put pressure on your APP's runtime, so it's generally better to handle bad IPs at a firewall level.

So you would put a cloud firewall in front of your server first and block them there before they even get to the web/app server.

Additionally, you could add a blocker in web servers like Nginx. Nginx can further rate limit as well and requests to Nginx are less expensive compared to invoking your application runtime usually.

Collapse
 
tiagomabango profile image
TiagoMabango

In these cases, the proxy works very well, you just mentioned Nginx, which is very well known.

I noted the observation, thank you very much for your contribution.

Collapse
 
stevsharp profile image
Spyros Ponaris

Thanks for sharing!

Collapse
 
tiagomabango profile image
TiagoMabango

Thanks for your comment, It's great to know that we share and help others!!

Collapse
 
codethug profile image
Nicolas Quijano

I fail to see how this is tagged #c, which is for ANSI C programming language not C# !
Please change the tag to #csharp, muchas gracias
Cheers !

Collapse
 
tiagomabango profile image
TiagoMabango • Edited

thanks, i will change!