Eu fiz um webapp simples que mostra alguns dados em uma tabela, que serão atualizados semanalmente.
Essa atualização foi feita no back-end com algum código python, que raspa e altera alguns dados, antes de colocá-lo em um banco de dados SQLite.
Depois de fazer algumas leituras, aprendi que, para entregar esses dados ao meu aplicativo da web, eu deveria criar uma API com o Flask, que pode pegar esses dados e entregá-los ao JS no meu aplicativo da web no formato JSON, que pode usar os dados para preencher o mesa. No entanto, devo proteger minha API com nome de usuário e pw. Mas como é um front-end JS que recupera dados da API, não há realmente sentido, pois o nome de usuário e o pw terão que ser codificados no JS, que poderão ser lidos pelos usuários. (Eu acho que)
Devo expor minha API a todos, ou esse não é o caminho a seguir para poder usar dados SQLite como back-end para meu aplicativo da web? Eu estou bem mantendo a API apenas para um GET.
fonte
Respostas:
Você está correto, não faz sentido proteger sua API. A proteção de uma API é necessária apenas em determinadas circunstâncias.
Se você estiver acessando dados que não deseja que ninguém veja, talvez por meio de uma chamada de back-end, faria sentido adicionar alguma forma de segurança (normalmente uma chave de API ou tokens de autorização em seus cabeçalhos de solicitação).
No entanto, se você estiver fazendo chamadas do seu front-end (por exemplo, do lado do cliente) para uma API de back-end, não faz sentido colocar segurança adicional, pois o usuário já pode ver a solicitação e já tem acesso aos dados que a API está retornando. - então, protegendo você não está conseguindo nada.
Normalmente, se a página que o usuário está visitando contém dados confidenciais que você não deseja que todos vejam, você deve tomar medidas para proteger seu site (por exemplo, protegê-lo com um login para nome de usuário e senha antes de poder acessar essa página) . Se você seguir essa abordagem, em que o site é protegido por nome de usuário e senha, atualize a API para garantir que ela não responda às solicitações em que o usuário não está autenticado (por exemplo, gerando um token de sessão ou algo exclusivo para cada usuário conectado).
Se você der uma olhada nos sites que possuem muitos dados gratuitos disponíveis, descobrirá que todos eles têm chamadas de API de front-end completamente inseguras (porque não faz sentido se os dados já estiverem livres para acessar). Alguns sites tomam medidas para tentar garantir que é o próprio site que está chamando a API, mas mesmo assim é um pouco inútil, já que os scrappers da Web sempre podem extrair os dados do HTML.
fonte
Dê uma olhada nesta página que descreve os cabeçalhos de autenticação. Essa rota mais simples é codificar as informações do cabeçalho no Flask para torná-lo um pouco mais seguro. Você também pode tentar a rota mais envolvida de ler as informações do cabeçalho do seu banco de dados. O que está atualmente trabalhando para eu ler no postgres db está abaixo, para que você possa modificá-lo um pouco para o sqlite.
fonte
fonte