blog 1AktualnościDevelopersEnterpriseBlockchain ExplainedWydarzenia i konferencjePrasaBiuletyny

Zapisz się do naszego newslettera.

Adres e-mail

Szanujemy twoją prywatność

HomeBlogBlockchain Development

Jak uniknąć przesyłania klucza prywatnego do GitHub: sposoby zapobiegania upublicznianiu twoich sekretów

Chroń swoje klucze prywatne i sekrety API podczas opracowywania inteligentnych kontraktów przez ConsenSys7 października 2020Opublikowano 7 października 2020

zamknięte drzwi drewniane PPCRJ2J

Autorzy: Coogan Brennan i Thomas Hay

Kilka razy w roku, za fabuła robi the rundy niefortunnego dewelopera Ethereum, który budując projekt blockchain, przypadkowo przesyła swoje super-tajne wyrażenie mnemoniczne – używane do generowania ich portfela – na publiczną stronę GitHub. W ciągu kilku sekund ich portfel został „zhakowany” i opróżniony z funduszy.

Jednak tak naprawdę nic nie zostało zhakowane: transakcja przenosząca wszystkie aktywa na adres „hakera” przebiega bez zarzutu. Dlatego sieć przetwarza i akceptuje. Sieć nie dba o to, kto podpisuje transakcję ani jaki był jej zamiar, tylko że jej kryptografia jest solidna. Sieć przyjmuje założenie, że każdy, kto posiada mnemonik lub wygenerowane klucze prywatne, jest prawowitym właścicielem aktywów na odpowiednich kontach. 

To zimna pociecha dla osoby, która straciła kontrolę nad swoim portfelem. Natychmiastową reakcją jest myślenie, że ich portfel został zhakowany. To jest do zrozumienia! Zanim jednak dojdziesz do punktu, w którym będziesz musiał się zastanawiać, czy Twój portfel nie został przejęty, dobrze jest sprawdzić, czy nie masz zamiaru nieświadomie ujawnić swoich prywatnych informacji.

Oto kilka ostatecznych kroków, które pozwolą uniknąć podobnej sytuacji. (Dodatkowe punkty: techniki opisane w tym artykule zapewniają wysoki poziom higieny bezpieczeństwa dla każdego projektu, niezależnie od tego, czy chodzi o blockchain!)

Poniżej przedstawiamy dwa podejścia do tego, jak NIE publikować sekretów (kluczy API, kluczy prywatnych, fraz inicjujących, haseł do bazy danych) w repozytorium GitHub:

Podejście 1: Using.gitignore, a.env file i dotenv (zakładamy, że tworzymy przy użyciu wzorców wspólnych dla Solidity i przepływu pracy przy użyciu Trufla i MetaMask, mimo że zostało to uogólnione)

Krok 1: Przeczytaj dokumentację.gitignore. Poważnie, przeczytaj całą stronę dokumentacji.

Plik A.gitignore pozwala określić pliki, które nie powinny być śledzone. Utworzysz plik.gitignore w katalogu, w którym rozwijasz swój projekt. W tym pliku określisz pliki, których nie chcesz śledzić. Dokumentacja wyjaśni Ci różne wzorce tekstowe, których możesz użyć, aby nie śledzić (lub śledzić) plików.


Oto przykład jednego:

imageofgitignorefile 1

W linii 20. dodaliśmy plik.env

Krok 2: Skonfiguruj plik.env do przechowywania zmiennych środowiskowych

Zmienne środowiskowe, pierwotnie zaimplementowane w wersji 7 Unix (wydanej w 1979 przez Bell Labs, kliknij tutaj, aby uzyskać kopię instrukcji) zmienić proces (y), które działa system komputerowy. Zmienne środowiskowe zostały zaimplementowane we wszystkich systemach operacyjnych, których nasi uczniowie używają do tworzenia aplikacji dApps na Ethereum (Unix, Linux, MacOS, Windows). W tym przypadku twoje wpisy tajne są traktowane jako zmienne środowiskowe i umieszczane w pliku o nazwie.env.

Oto przykład pliku .env

exampleofenvfile

Krok 3: Przeczytaj dokumentację dotyczącą dotenv. Zainstaluj dotenv.

Dotenv „To moduł o zerowej zależności, który ładuje zmienne środowiskowe z pliku.env do pliku process.env”. (pobrane z  https://www.npmjs.com/package/dotenv 25 września 2020 r.)

nstall dotenv przy użyciu polecenia npm install dotenv

Krok 4: Dodaj require (‘dotenv’). Config () na początku swojej aplikacji. Użyj process.env w tym pliku.

Przykład kodu: application.js

// To jest początek pliku application.js require (‘dotenv’). Config () // To jest przykład process.env w dalszej części pliku var PrivateKey = new Buffer (process.env. ["PRYWATNY KLUCZ"], "klątwa")) // Oto kolejny przykład użycia process.env const APIKey = process.env.API_KEY; Język kodu: JavaScript (javascript)

Krok 5: Teraz, jeśli chcesz opublikować w istniejącym repozytorium GitHub lub wypchnąć do nowego repozytorium GitHub, możesz to zrobić. Twoje sekrety nie pojawią się w repozytorium GitHub.

Samouczek wideo z innego źródła: Daniel Schiffman z Pociąg kodujący udostępnia w swoim filmie samouczek wideo wykorzystujący aplikację pogodową 3.4 Ukrywanie kluczy API za pomocą zmiennych środowiskowych (dotenv) i wysyłanie kodu do GitHub.

Samouczek tekstowy z innego źródła: Blog Masona zawiera samouczek o nazwie Jak wdrożyć token ERC20 w 20 minut. Opisuje, jak używać pliku.env i dotenv w kontekście wdrażania inteligentnego kontraktu przy użyciu Truffle i Infura.

Podejście 2: Używanie zaszyfrowanych sekretów w akcjach GitHub (odpowiednie dla osób znających GitHub na poziomie organizacji, z niezbędnymi uprawnieniami i kontem GitHub, aby móc je zastosować w praktyce).

Podejście 2 wykorzystuje narzędzia specjalnie stworzone przez GitHub do rozwiązania problemu tajemnic będących niezbędną częścią wdrażania kodu, ale nie czegoś, co powinno być ujawniane osobom, które nie powinny mieć do nich dostępu. To podejście jest najbardziej odpowiednie dla organizacji lub osoby korzystającej z GitHub

Krok 1: Przeczytaj dokumentację Zaszyfrowane sekrety. Poważnie, przeczytaj dokumentację.

Zaszyfrowane sekrety umożliwiają przechowywanie i używanie sekretów w jednym repozytorium GitHub lub w wielu repozytoriach GitHub. Przeczytaj dokumentację o tym, jak z nich korzystać, ponieważ GitHub doskonale wyjaśnia, jak ich używać Zaszyfrowane sekrety w ciągu Akcje GitHub

Krok 2: Zrób to, co mówi dokumentacja. To całkiem dobra dokumentacja. 

Wniosek

Znasz już dwa sposoby zapobiegania publikowaniu swoich sekretów w GitHub. Czy są inne sposoby, aby to zrobić? Na pewno. Oto dwie metody, które sprawdzają się w naszym przypadku. Główną kwestią, którą staramy się przekazać, jest upewnienie się, że zastanawiasz się, gdzie mogą pojawić się Twoje sekrety, i upewnienie się, że podejmiesz kroki, aby się chronić. Bądź tam bezpieczny.

BezpieczeństwoSmart ContractsSolidityNewsletterZapisz się do naszego newslettera, aby otrzymywać najnowsze wiadomości dotyczące Ethereum, rozwiązania dla przedsiębiorstw, zasoby dla programistów i nie tylko.Jak zbudować udany produkt BlockchainWebinar

Jak zbudować udany produkt Blockchain

Jak skonfigurować i uruchomić węzeł EthereumWebinar

Jak skonfigurować i uruchomić węzeł Ethereum

Jak zbudować własny interfejs API EthereumWebinar

Jak zbudować własny interfejs API Ethereum

Jak stworzyć token społecznościowyWebinar

Jak stworzyć token społecznościowy

Korzystanie z narzędzi bezpieczeństwa w tworzeniu inteligentnych kontraktówWebinar

Korzystanie z narzędzi bezpieczeństwa w tworzeniu inteligentnych kontraktów

Przyszłość finansów, aktywów cyfrowych i DeFiWebinar

Przyszłość finansów: aktywa cyfrowe i DeFi

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