Mniej znaczy bezpieczniej: jak Obsidian zmniejsza ryzyko ataków na łańcuch dostaw Ataki na łańcuch dostaw to złośliwe aktualizacje, które wkradają się do kodu open source używanego przez wiele aplikacji. Oto jak projektujemy Obsidian, aby zapewnić, że aplikacja jest bezpiecznym i prywatnym środowiskiem dla Twoich myśli. Mniej znaczy bezpieczniej Może to brzmieć oczywiście, ale podstawowym sposobem, w jaki zmniejszamy ryzyko ataków na łańcuch dostaw, jest unikanie polegania na kodzie osób trzecich. Obsidian ma niewielką liczbę zależności w porównaniu do innych aplikacji w naszej kategorii. Zobacz listę bibliotek open source na naszej stronie z uznaniami. Funkcje takie jak Bases i Canvas zostały zaimplementowane od podstaw, zamiast importować gotowe biblioteki. Daje nam to pełną kontrolę nad tym, co działa w Obsidian. - W przypadku małych funkcji użytkowych prawie zawsze ponownie je implementujemy w naszym kodzie. - W przypadku średnich modułów fork'ujemy je i trzymamy w naszym kodzie, jeśli licencje na to pozwalają. - W przypadku dużych bibliotek, takich jak pdf.js, Mermaid i MathJax, dołączamy znane, zablokowane wersje plików i aktualizujemy je tylko okazjonalnie lub gdy pojawiają się poprawki bezpieczeństwa. Czytamy notatki o wydaniach, przyglądamy się zmianom upstream i dokładnie testujemy przed przełączeniem. Takie podejście utrzymuje naszą grafikę zależności płytką z niewielką liczbą podzależności. Mniejsza powierzchnia zmniejsza szansę na to, że złośliwa aktualizacja przejdzie niezauważona. Co właściwie znajduje się w aplikacji Tylko garstka pakietów jest częścią aplikacji, którą uruchamiasz, np. Electron, CodeMirror, moment.js. Pozostałe pakiety pomagają nam w budowie aplikacji i nigdy nie trafiają do użytkowników, np. esbuild czy eslint. Zablokowane wersje i pliki blokady Wszystkie zależności są ściśle zablokowane pod względem wersji i zatwierdzone z plikiem blokady. Plik blokady jest źródłem prawdy dla budów, więc uzyskujemy deterministyczne instalacje. Daje nam to prosty ślad audytowy podczas przeglądania zmian. Nie uruchamiamy skryptów postinstall. Zapobiega to wykonywaniu dowolnego kodu przez pakiety podczas instalacji. Powolne, przemyślane aktualizacje Kiedy aktualizujemy zależności,: ...