[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Roberto Noya
Criador Roberto Noya 12/09/2022

Ola Carlos,

Pretendo criar uma api em laravel que ira alimentar um site.

Notei em algumas api's de outras empresas que utlizam uma CHAVE fixa na URL e tambem um token FIXO no headers. Isso para evitar o acesso a API diretamente. Entretanto, notei que e possivel identificar todos os elementos presentes no headers no console do NAVEGADOR CHROME em "Ferramentas dosenvolvedor"

Existe alguma forma de usar um token FIXO sem exibi-lo no console do navegador?

Grato!

 

 

 

 

Manager Carlos Ferreira 12/09/2022

Olá, Roberto!
Tudo bem?

Vou te mostrar um cenário comum:

Você tem uma API, privada, em Laravel.

O client para acessar essa API, primeiramente precisa informar suas credenciais, como usuário e senha.

O client envia essas credenciais para o server, o server devolve um token, uma chave de acesso.

Agora, o client com posse dessa chave ele pode acessar os recursos privados da API que ele tem acesso. Mas, por que ele pode acessar? Porque ele já provou sua autenticidade.

Ah, mas toda vez que envio a request consigo ver o token no header da request (Authorization: Bearer {token}). Isso não é um problema, porque o usuário já provou que a chave realmente lhe pertence, porque ele já validou o seu acesso, e não tem como esconder e nem o porque. O que é super recomendado nesse caso, é trabalhar com https, porque assim os dados navegam de forma criptografada, de ponta a ponta. Ainda que exista algum malware na rede, os dados estarão viajando de forma criptografada, logo, estão protegidos.

Fui claro amigo? 🙂

Carlos Ferreira
Criador Roberto Noya 12/09/2022

A situaçāo é diferente.

Nao ha autenticao de usuario. A API e aberta porem precisa ter 2 credenciais fixas.

Uma na URL e outra no Header

Tem ate um banco que faz isso.

Veja a url https://api.pjbank.com.br/recebimentos/{{credencial-boleto}}

No caso a credencial do boleto e uma chave FIXA

E no Header vai outra chave FIXA chamada X-CHAVE

Ambas eu consigo visualizar no console do Navegador.

O que eu gostaria de saber se existe alguma forma de nao exibir no console do navegador uma credencial.

Entedeu agora?

 

 

Roberto Noya
Criador Roberto Noya 12/09/2022

Reformulando a pergunta para voce entender melhor:

O site minhaloja.com.br consome uma api.

Eu quero saber se e possivel evitar o acesso da API quando uma pessoa usa o POSTMAN ou outro semenlhante.

 

 

 

 

 

Roberto Noya
Manager Carlos Ferreira 12/09/2022

Mas, essa credencial é fixa para todos os clientes? Se for, não tem o porque esconder.

De qualquer forma, a resposta é a mesma, não é possível ocultar isso, a forma mais tradicional é enviar essa chave no header da request, assim fica menos esposto, e trabalhar com SSL (https).

---

Se você enviar a request pelo backend (usando um Guzzle por exemplo), estes dados não estarão espostos.

Carlos Ferreira
Criador Roberto Noya 12/09/2022

A credencial e FiXA conforme eu informei e cada cliente tem a sua chave.

Mas fica a pergunta:

E possivel evitar o acesso de uma API sem credenciamento quando uma pessoa usa o POSTMAN ou outro semenlhante?

Roberto Noya
Manager Carlos Ferreira 12/09/2022

Como o client recebe essa chave do server?

--

Sobre a sua pergunta, sim, é possível evitar o acesso a API, você pode controlar quem está requisitando (até mesmo o IP do client), pode CORS para limitar os clients que terão acesso a API.

Carlos Ferreira
Criador Roberto Noya 12/09/2022

Tem o CORS.... Nao tinha pensado nisso.

Voce tem algum curso de CORS?

 

Roberto Noya
Manager Carlos Ferreira 12/09/2022

Que aborde com profundidade, não.

Mas, o segredo está em configurar no arquivo config/cors.php

Carlos Ferreira
Criador Roberto Noya 12/09/2022

Entendi. Vou pesquisar a respeito.

Obrigado!

Roberto Noya
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!