[semana 6] GitHub do Pagarme e Segurança

Pessoal,

Alterei esse tópico dividindo ele em 2 para compartilhar o link do github do Pagarme. Comecei a verificar agora mas acredito que será útil.

  1. Github Pagarme.

  2. Segurança: Pensando em exercitar as boas práticas de segurança, fiz o seguinte procedimento para proteger as credenciais que criamos no site da Cielo para que não fiquem no código que subiremos no github:

  1. Criar uma pasta para informações locais. No meu caso criei na raiz do projeto mas pode ser criada em qualque local:
    mkdir local-information
  2. Criar um arquivo para guardar informações sensíveis:
    touch assets.js
  3. incluir essa pasta e eventuais subpastas no arquivo .gitignore para que não sejam incluídas nos commits por meio do comando git add . ou git add --all
/**/local-information/**/*
  1. No arquivo assets.js, configurar um módulo exportando as credenciais como propriedades:
module.exports = {
    cieloCredentials: {
            MerchantId: 'Escreva sua informação aqui',
            MerchantKey: 'Escreva sua informação aqui',
    }
}
  1. Inclua const assets = require('../local-information/assets') arquivo onde chamará a função fetch com a url da Cielo.
  2. Substitua as informações escritas diretamente no código pelas linhas abaixo:
 fetch('https://apisandbox.cieloecommerce.cielo.com.br/1/sales/', {
            method: 'post',
            body: JSON.stringify(body),
            headers: { 
                'Content-Type': 'application/json',
                'MerchantId': assets.cieloCredentials.MerchantId,
                'MerchantKey': assets.cieloCredentials.MerchantKey
             }
        })
        .then(res => res.json())
        .then(json => console.log(json));

Me digam se gostaram dessa solução e se recomendam outras, quem sabe mais seguras.

6 Likes

Alberto, isso é uma boa para fins de estudos, o problema é que assim em projetos reais haverá sempre a necessidade de credenciais gravadas em código-fonte, no caso será preciso recriar (codar) o arquivo com elas no servidor.

Já que você abriu pra sugerir outra abordagem, uma comum que sugiro é o uso de variáveis de ambiente. No caso do Node é preciso utilizar alguma biblioteca, como a “dotenv” pra lidar com elas. Assim no código você vai acessar essas credenciais através delas, mais ou menos assim por exemplo: MerchantId: process.env.MERCHANT_ID.

Aí no projeto local, você grava essas informações em um arquivo .env organizado em linhas, como: MERCHANT_ID = "1234"

E quando subir o projeto em produção pra um serviço de hospedagem, lá na configuração do serviço você define essas variáveis de ambiente também. Assim elas ficam protegidas em todos os lados.

Olha como está um trecho de configuração de uma aplicação Node simples que eu subi pro serviço A2Hosting:

Aí no meu projeto local, essas (e outras) informações ficam armazenadas no arquivo .env (que é ignorado pelo git e não vai pro Github também). Segue um recorte:
image

Mantendo em variáveis de ambiente, o código-fonte se mantém o mesmo, facilitando inclusive a sincronia com o repositório, e usa a camada de proteção do próprio servidor.

4 Likes

Sempre uso o dotenv. Gosto muito.

1 Like

Boa AndreMR, essa é uma boa prática e a mais usada atualmente e você exemplificou perfeitamente, parabéns!