Hvordan unngå å laste opp din private nøkkel til GitHub: Tilnærminger for å forhindre at hemmelighetene dine blir offentlige

blogg 1NyheterUtviklereEnterpriseBlockchain ExplainedBegivenheter og konferanserPresseNyhetsbrev

Abonner på vårt nyhetsbrev.

Epostadresse

Vi respekterer personvernet ditt

HjemBloggBlockchain utvikling

Hvordan unngå å laste opp din private nøkkel til GitHub: Tilnærminger for å forhindre at hemmelighetene dine blir offentlige

Hold dine private nøkler og API-hemmeligheter trygge mens du utvikler smarte kontrakter av ConsenSys 7. oktober 2020 Publisert 7. oktober 2020

låst tredør PPCRJ2J

Av Coogan Brennan og Thomas Hay

Noen ganger i året, en historie gjør at de runder av en uheldig Ethereum-utvikler som, mens han bygde et blockchain-prosjekt, ved et uhell lastet opp sin superhemmelige mnemoniske frase – som ble brukt til å generere lommeboken – til sin offentlige GitHub-side. I løpet av få sekunder har lommeboken deres blitt “hacket” og tømt for pengene.

Ingenting har virkelig blitt hacket, skjønt: Transaksjonen som overfører alle eiendeler til “hacker” -adressen, er perfekt. Derfor behandler og aksepterer nettverket det. Nettverket bryr seg ikke hvem som signerer transaksjonen eller hva intensjonen deres var, bare at kryptografien er lyd. Nettverket antar at alle som har en mnemonic, eller de genererte private nøklene, er den rettmessige eieren av eiendelene i de tilsvarende kontoene.. 

Det er kald trøst for personen som har mistet kontrollen over lommeboken. Den umiddelbare reaksjonen er å tro at lommeboken deres har blitt hacket. Det er forståelig! Men før du kommer til det punktet hvor du må lure på om lommeboken din var kompromittert, er det greit å sjekke at du ikke er i ferd med å uforvarende avsløre din private informasjon.

Her er noen endelige trinn for å unngå å komme i en lignende situasjon. (Bonuspoeng: teknikkene beskrevet i denne artikkelen er god sikkerhetshygiene for ethvert prosjekt, blockchain eller ikke!)

Nedenfor skisserer vi to tilnærminger til hvordan du IKKE publiserer hemmeligheter (API-nøkler, private nøkler, frøfraser, databasepassord) til GitHub-depotet ditt:

Tilnærming 1: Using.gitignore, a.env-fil og dotenv (forutsetter at vi utvikler ved hjelp av mønstre som er felles for Solidity og en arbeidsflyt ved hjelp av Trøffel og MetaMask, selv om dette er generalisert)

Trinn 1: Les dokumentasjonen på.gitignore. Seriøst, les hele siden med dokumentasjon.

A.gitignore-filen lar deg spesifisere filer som ikke skal spores. Du vil opprette en.gitignore-fil i katalogen du utvikler prosjektet i. Innenfor den filen vil du spesifisere filene du ikke vil spore. Dokumentasjonen vil forklare deg de forskjellige tekstmønstrene du kan bruke for å ikke spore (eller spore) filer.

Her er et eksempel på en:

imageofgitignorefile 1

I linje 20 har vi lagt til en.env-fil

Trinn 2: Sett opp en.env-fil for å lagre miljøvariablene

Miljøvariabler, opprinnelig implementert i versjon 7 Unix (utgitt i 1979 av Bell Labs, Klikk her for en kopi av manualen) endre prosessen (e) som et databehandlingssystem kjører. Miljøvariabler er implementert i alle operativsystemene som studentene våre bruker til å bygge dApps på Ethereum (Unix, Linux, MacOS, Windows). I dette tilfellet blir hemmelighetene dine behandlet som miljøvariabler, og plassert i en fil som heter.env.

Her er et eksempel på a.env-fil

eksempel på fenvfil

Trinn 3: Les dokumentasjonen om dotenv. Installer dotenv.

Dotenv “Er en nullavhengighetsmodul som laster miljøvariabler fra a.env-filen til process.env.” (innhentet fra  https://www.npmjs.com/package/dotenv 25. september 2020)

nstall dotenv ved hjelp av npm installer dotenv

Trinn 4: Legg til krav (‘dotenv’). Config () til starten av søknaden. Bruk process.env i denne filen.

Kodeeksempel: application.js

// Dette er toppen av application.js krever (‘dotenv’). Config () // Dette er et eksempel på process.env senere i filen var PrivateKey = new Buffer (process.env. ["PRIVATE_KEY"], "hex")) // Her er et annet eksempel på bruk av process.env const APIKey = process.env.API_KEY; Kodespråk: JavaScript (javascript)

Trinn 5: Hvis du vil publisere til et eksisterende GitHub-arkiv eller skyve til et nytt GitHub-lager, kan du gjøre det. Dine hemmeligheter vises ikke som en del av GitHub-depotet ditt.

Videoopplæring fra en annen kilde: Daniel Schiffman fra Kodetoget gir en videoopplæring ved hjelp av et værprogram i videoen sin 3.4 Skjule API-nøkler med miljøvariabler (dotenv) og Pushing Code til GitHub.

Tekstopplæring fra en annen kilde: Mason’s Blog har en opplæring som heter Hvordan distribuere et ERC20-token på 20 minutter. Den beskriver hvordan du bruker a.env-fil og dotenv i sammenheng med distribusjon av en smart kontrakt ved bruk av Truffle og Infura.

Tilnærming 2: Bruk av krypterte hemmeligheter i GitHub Actions (passende for de som er kjent med GitHub på organisasjonsnivå, med de nødvendige tillatelsene og GitHub-kontoen for å kunne praktisere disse).

Tilnærming 2 bruker verktøy spesielt laget av GitHub for å løse problemet med hemmeligheter som en nødvendig del av distribusjon av kode, men ikke noe som skal avsløres for enkeltpersoner som ikke skal ha tilgang til dem. Denne tilnærmingen er mest relevant for en organisasjon eller person som bruker GitHub

Trinn 1: Les dokumentasjonen på Krypterte hemmeligheter. Seriøst, les dokumentasjonen.

Krypterte hemmeligheter lar deg lagre og bruke hemmeligheter i et enkelt GitHub-arkiv eller på tvers av mange GitHub-arkiver. Les dokumentasjonen om hvordan du bruker disse, da GitHub gjør en utmerket jobb med å forklare hvordan du bruker Krypterte hemmeligheter innenfor GitHub-handlinger

Trinn 2: Gjør hva dokumentasjonen forteller deg å gjøre. Det er ganske god dokumentasjon. 

Konklusjon

Du vet nå to tilnærminger for å forhindre at hemmelighetene dine blir publisert til GitHub. Er det andre tilnærminger for å gjøre dette? Sikkert. Her er to metoder som fungerer for oss. Hovedpoenget vi prøver å formidle er å sørge for at du tenker på hvor hemmelighetene dine kan dukke opp, og sørge for at du tar skritt for å beskytte deg selv. Hold deg trygg der ute.

SikkerhetSmart kontrakterSoliditetNyhetsbrevAbonner på nyhetsbrevet vårt for de siste Ethereum-nyhetene, bedriftsløsninger, utviklerressurser og mer.E-postadresse Eksklusivt innholdHvordan lage et vellykket Blockchain-produktWebinar

Hvordan lage et vellykket Blockchain-produkt

Hvordan sette opp og kjøre en Ethereum-nodeWebinar

Hvordan sette opp og kjøre en Ethereum-node

Hvordan lage din egen Ethereum APIWebinar

Hvordan lage din egen Ethereum API

Hvordan lage et sosialt tokenWebinar

Hvordan lage et sosialt token

Bruke sikkerhetsverktøy i smart kontraktutviklingWebinar

Bruke sikkerhetsverktøy i smart kontraktutvikling

Fremtiden for digitale eiendeler og deFiWebinar

Fremtidens økonomi: digitale eiendeler og deFi

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me