NewsDevelopersEnterpriseBlockchain ExplainedEvents and ConferencesPressButlletins informatius
Subscriu-te al nostre butlletí.
Correu electrònic
Respectem la vostra privadesa
IniciBlogDesenvolupament de la cadena de blocs
Com evitar penjar la vostra clau privada a GitHub: enfocaments per evitar fer públics els vostres secrets
Mantingueu les vostres claus privades i secrets de l’API segurs mentre desenvolupeu contractes intel·ligents per ConsenSys 7 d’octubre de 2020 Publicat el 7 d’octubre de 2020
A càrrec de Coogan Brennan i Thomas Hay
Unes quantes vegades a l’any, a història fabrica el rondes d’un desafortunat desenvolupador d’Ethereum que, mentre construïa un projecte de blockchain, penja accidentalment la seva frase mnemotècnica súper secreta —utilitzada per generar la seva cartera— a la seva pàgina pública de GitHub. En qüestió de segons, la seva cartera s’ha “piratejat” i s’ha esgotat els seus fons.
Tanmateix, no s’ha realitzat res piratejat: la transacció que transfereix tots els actius a l’adreça de “pirata informàtic” és perfectament sòlida. Per això, la xarxa la processa i l’accepta. A la xarxa no li importa qui signa la transacció ni quina intenció tenia, només que la seva criptografia sigui sòlida. La xarxa suposa que qualsevol persona que tingui un mnemotècnic o les claus privades generades és el legítim propietari dels actius dels comptes corresponents..
Això suposa un fred confort per a la persona que ha perdut el control de la seva cartera. La reacció immediata és pensar que la seva cartera ha estat piratejada. És comprensible! Però, abans d’arribar al punt en què us heu de preguntar si la vostra cartera es va veure compromesa, és bo comprovar que no esteu a punt d’exposar sense voler la vostra informació privada.
A continuació, es detallen alguns passos definitius per evitar caure en una situació similar. (Punts extra: les tècniques descrites en aquest article són una gran seguretat per a qualsevol projecte, blockchain o no).
A continuació, esbossem dos enfocaments sobre com NO publicar secrets (claus API, claus privades, frases inicials, contrasenyes de base de dades) al vostre dipòsit GitHub:
Enfocament 1: Using.gitignore, un fitxer a.env i dotenv (suposem que estem desenvolupant utilitzant patrons comuns a Solidity i un flux de treball mitjançant Tòfona i MetaMask, tot i que s’ha generalitzat)
Pas 1: llegiu la documentació a.gitignore. De debò, llegiu tota la pàgina de documentació.
El fitxer A.gitignore us permet especificar fitxers que no s’han de fer un seguiment. Creeu un fitxer.gitignore al directori on esteu desenvolupant el projecte. Dins d’aquest fitxer, especifiqueu els fitxers que no voleu fer un seguiment. La documentació us explicarà els diferents patrons de text que podeu utilitzar per no fer un seguiment (ni un seguiment) de fitxers.
Aquí en teniu un exemple:
A la línia 20, hem afegit un fitxer a.env
Pas 2: configureu un fitxer a.env per emmagatzemar les variables d’entorn
Variables d’entorn, implementades originalment a la versió 7 Unix (publicada el 1979 per Bell Labs, feu clic aquí per obtenir una còpia del manual) canvieu els processos que executa un sistema informàtic. S’han implementat variables d’entorn en tots els sistemes operatius que els nostres estudiants utilitzen per construir dApps a Ethereum (Unix, Linux, MacOS, Windows). En aquest cas, els vostres secrets es tracten com a variables d’entorn i es col·loquen en un fitxer anomenat.env.
Aquí teniu un exemple de fitxer a.env
Pas 3: llegiu la documentació sobre dotenv. Instal·leu dotenv.
Dotenv “És un mòdul de dependència zero que carrega les variables d’entorn d’un fitxer a.env a process.env.” (recuperat de https://www.npmjs.com/package/dotenv el 25 de setembre de 2020)
nstall dotenv mitjançant npm install dotenv
Pas 4: afegiu require (‘dotenv’). Config () a l’inici de la vostra aplicació. Utilitzeu process.env en aquest fitxer.
Exemple de codi: application.js
// Aquesta és la part superior de application.js require (‘dotenv’). Config () // Aquest és un exemple de process.env més endavant al fitxer var PrivateKey = new Buffer (process.env. ["PRIVATE_KEY"], "hex")) // Aquí hi ha un altre exemple d’utilitzar process.env const APIKey = process.env.API_KEY; Idioma del codi: JavaScript (javascript)
Pas 5: ara, si voleu publicar a un dipòsit GitHub existent o enviar-lo a un nou dipòsit GitHub, podeu fer-ho. Els vostres secrets no apareixeran al vostre dipòsit de GitHub.
Vídeo tutorial d’una altra font: Daniel Schiffman de El tren de codificació proporciona un vídeo tutorial mitjançant una aplicació meteorològica al seu vídeo 3.4 Amagar les claus de l’API amb variables d’entorn (dotenv) i introduir el codi a GitHub.
Tutorial de text d’una altra font: el bloc de Mason té un tutorial anomenat Com es desplega un testimoni ERC20 en 20 minuts. Descriu com utilitzar un fitxer a.env i dotenv en el context de desplegar un contracte intel·ligent mitjançant Truffle i Infura.
Enfocament 2: Ús de secrets encriptats a les accions de GitHub (adequat per a aquells que estiguin familiaritzats amb GitHub a nivell d’organització, amb els permisos i el compte de GitHub necessaris per poder posar-los en pràctica).
L’aproximació 2 utilitza eines creades específicament per GitHub per resoldre la qüestió dels secrets que són una part necessària del desplegament del codi, però no una cosa que s’hauria de revelar a les persones que no hi haurien d’accedir. Aquest enfocament és més rellevant per a una organització o una persona que utilitza GitHub
Pas 1: llegiu la documentació a Secrets encriptats. Llegiu seriosament la documentació.
Els secrets encriptats us permeten emmagatzemar i utilitzar secrets en un únic dipòsit de GitHub o en molts repositoris de GitHub. Llegiu la documentació sobre com utilitzar-los, ja que GitHub fa una excel·lent tasca d’explicar com utilitzar-los Secrets encriptats dins Accions de GitHub
Pas 2: feu el que us demana la documentació. És una bona documentació.
Conclusió
Ara coneixeu dos enfocaments per evitar que els vostres secrets es publiquin a GitHub. Hi ha altres enfocaments per fer-ho? Certament. Aquí hi ha dos mètodes que funcionen per a nosaltres. El principal punt que intentem transmetre és assegurar-se que està pensant on poden aparèixer els seus secrets i assegurar-se que es prenen mesures per protegir-se. Mantingueu-vos fora de perill.
Seguretat Contractes intel·ligents Sol·licitud de notícies Subscriviu-vos al nostre butlletí per obtenir les últimes novetats, solucions empresarials, recursos per a desenvolupadors i molt més sobre Ethereum. Adreça electrònica Contingut exclusiuSeminari web
Com es pot crear un producte Blockchain amb èxit
Seminari web
Com configurar i executar un node Ethereum
Seminari web
Com es crea la seva pròpia API Ethereum
Seminari web
Com es crea un testimoni social
Seminari web
Ús d’eines de seguretat en el desenvolupament de contractes intel·ligents
Seminari web