Projeto final do bootcamp Backend - Em parceria com o projeto MINAS do Porto Digital.
A proposta dessa API é construir uma base de dados com URLs de lojas falsas (Fake Store) que podem ser adicionadas e visualizadas. É possível consultar se uma URL recebida por SMS ou por e-mail consta na base de dados e, por conseguinte, tenha grande chance de se tratar de uma fraude aplicada por terceiros mal intencionados. As submissões não serão exibidas ao público de imediato e passaram por uma checagem que atribuirá a estas uma tag específica para aumentar a credibilidade da consulta.
- Para ler a proposta completa, clique aqui.
- Consultar e cadastrar URLs relacionadas a golpes na Internet;
- Fazer filtros específicos por URL ou pelo nome do alvo (site original);
- Filtrar apenas as URLs classificadas como maliciosas;
- Usuários com permissões elevadas podem classificar URLs;
- É possível editar e deletar URLs.
- Git/Github
- Node.js
- npm
- MongoDB Atlas
- Heroku
Dependencias:
- Express
- Mongoose
- Dotenv-safe
- Bcrypt
- jwt
A API trabalha com duas collections para armazenamento de duas principais estruturas: Usuários e URLs. Os usuários autenticados podem ter acesso as rotas autenticadas para alterar e deletar as submissões enviadas pelo público em geral. Isso serve para alterar o campo de análise, conferindo a submissão o status de analizada e, por tanto, elegível para ser exibida ao público.
Os pacotes bcrypt e jwt do Node são usados para armazenar a senha do usuário de forma segura no Mongo e para criar o token de acesso as rotas autenticadas, que podem ser acessadas via POSTMAN usando o Bearer para trafegar o Token no Header da requisição.
Api-sailor
├── src
│ ├── controller
│ ├── model
│ ├── routes
│ └── app.js
├── server.js
├── package.json
{
"id": 1,
"url": "http:xptofake.com",
"target": "XPTO",
"submissionDate":"01/12/2020",
"isAnalyzed": true,
"isMalicious":true
}
{
"id": 1,
"name": "John Doe",
"email": "john@doe.com",
"passwd":"mypassword"
}
Para utilizar esta API é necessária a instalação das tecnologias NodeJS e MongoDB.
- Instalação
- Faça um Fork desse repositório para seu GitHub;
- Clone seu repositório para seu ambiente local;
- Abra o console e digite os comandos:
$ npm init
$ npm install
- Inicialiazação
npm start
Verbo | Recurso | Descrição | OBS: |
---|---|---|---|
GET | /urls |
Retornar todas as urls submetidas e analisadas | Filtros disponíveis: Target e URL |
GET | /urls/malicious |
Retornar apenas as urls classificadas como maliciosas | Filtros disponíveis: Target |
GET | /urls/submissions |
Retornar todas as urls submetidas e não analisadas | * Requer autenticação |
GET | /urls/backlog |
Retornar todas as urls | * Requer autenticação |
POST | /urls/ |
Cadastrar nova url | Informar apenas a URL |
PUT | /urls/submissions/:id |
Atualizar uma submissão a partir do ID | * Requer autenticação |
DELETE | /urls/submissions/:id |
Deletar uma submissão a partir do ID | * Requer autenticação |
DELETE | /urls/submissions |
Deletar uma submissão a partir da URL | * Requer autenticação /Filtros disponíveis: URL |
PATCH | /urls/submissions/:id |
Atualizar atributos da submissão a partir do ID | * Requer autenticação |
Verbo | Recurso | Descrição | OBS: |
---|---|---|---|
GET | /users |
Retornar todas os usuários cadastrados | * Requer autenticação |
POST | /users |
Cadastrar novo usuário | Informar nome, email e senha |
POST | /users/login |
Rota de login do usuário | Retorna o Token de acesso |
O fluxo principal da API consiste na consulta de URLs analisadas que são entregues na rota principal. Um usuário pode consultar apenas as consideradas maliciosas e fazer filtros específicos. As URLs cadastradas são armazenadas com o status isAnalyzed: false
e isMalicious: false
. Esse status poderá ser mudado por um usuário autenticado que fará a análise e comprovará a malícia da URL por meio da rota autenticada /urls/submissions
.
O Fluxograma a seguir detalha o caso de uso básico da API:
O avanço da tecnologia proporcionou mudanças profundas na sociedade, seja no âmbito das relações pessoais ou nos negócios. Serviços que anteriormente eram oferecidos apenas fisicamente, passaram a existir também no âmbito digital. Um exemplo disso são as lojas virtuais (e-commerces).
No entanto, essa revolução digital também favoreceu o surgimento de um novo tipo de atividade criminosa, que opera silenciosamente criando cópias de websites de lojas oficiais para capturar informações financeiras de usuários na Internet.
A engenharia social usada por estes usuários mal intencionados é promovida visando ganhar cada vez mais um maior número de vítimas, logo, o compartilhamento de URLs potencialmente maliciosas para que possam ser consultadas pela comunidade é vital para que essas campanhas são obtenham o sucesso desejado. A API Sailor foi construida pensando nas pessoas comuns que trafegam pela internet, sobretudo os migrantes digitais (nossos pais, avós e tios), que podem ser alvos fáceis dos mais variados golpes.
O Bootcamp da reprograma proporcionou um contato amplo e prático dos conceitos de programação, desde os mais básicos, como a construção da lógica de programação com Git/GitHbu, JavaScript e suas principais partículas (variaveis, laços de repetição, arrays e objetos) até as estruturas de desenvolvimento web, com a API RESTFull, arquitetura MVC, protocolo HTTP e seus verbos, Banco de Dados não relacional com MongoDB, autenticação e autorização com o JWT, hospedagem e configuração de aplicações na nuvem.
- Faça o fork do projeto
- Crie uma branch para sua modificação (git checkout -b feature/any)
- Faça o commit (git commit -am 'Add some any')
- Push (git push origin feature/any)
- Crie um novo Pull Request