Niebezpieczeństwa wynikające z uzależnienia od kodu strony trzeciej

Jeśli subskrybujesz usługę za pośrednictwem łącza na tej stronie, firma Reeves and Sons Limited może otrzymać prowizję. Zobacz nasze oświadczenie etyczne.

Jest kilka naprawdę dobrych rzeczy na temat działania oprogramowania w Internecie. Po pierwsze, istnieje ogromna nieoficjalna sieć milionów ludzi tworzących ogromne repozytorium fragmentów kodu, które pomagają w obsłudze znacznie większej liczby milionów aplikacji.

Za każdym razem, gdy na dole strony internetowej widzisz mały link z napisem „Zasilany przez takiego i takiego”, jesteś świadkiem tego efektu współpracy w akcji.

I oczywiście głównym powodem, dla którego ludzie lubią udostępnianie i współpracę z osobami trzecimi, jest to, że może to zaoszczędzić wiele godzin w czasie programowania, ponieważ nie wymyślasz na nowo czegoś, co już istnieje.

Ale nawet biorąc pod uwagę te wspaniałe zalety systemu udostępniania kodu strony trzeciej, istnieje wiele powodów, dla których warto unikać korzystania z tych fragmentów kodu, jak zaraz się przekonamy…

1. Potencjalne zagrożenia bezpieczeństwa

Ponieważ prawie cały kod sterujący czymkolwiek w sieci ma charakter open source, można śmiało założyć, że jeśli w danej aplikacji znajduje się jakikolwiek szkodliwy ładunek, zostanie on szybko wykryty przez społeczność programistów i szybko poprawiony.

Jednak wiele z tych fragmentów kodu jest pobieranych setki, a nawet tysiące razy dziennie i nie każdy zespół administracyjny dobrze radzi sobie z utrzymaniem bezpiecznego systemu udostępniania kodu.

Im większa i bardziej złożona jest aplikacja, tym łatwiej ją zainfekować, dodając kilka linijek kodu w jakimś niejasnym miejscu. Prawie nikt nie poświęca czasu na analizowanie każdej linijki kodu w aplikacji, ponieważ na ogół zakłada, że ​​kodowi można ufać.

Wysoko wykwalifikowany programista zazwyczaj potrafi dobrze zaciemnić złośliwy charakter kodu i tylko inny wysoko wykwalifikowany programista odkryje, jaki jest jego cel… jeśli wykryty zostanie złośliwy fragment kodu.

2. Nie jesteś jego właścicielem

W rzeczywistości jest to splot problemów. Po pierwsze, możesz podlegać różnym warunkom licencyjnym. Jeśli na jednej stronie internetowej lub w aplikacji używanych jest wiele fragmentów kodu, w rzeczywistości możesz podlegać wielu różnym warunkom licencyjnym, a niektóre z nich mogą być ze sobą sprzeczne.

Oczywiście mało kto zadaje sobie trud przeczytania tych żmudnych list warunków, ale może to być potencjalnie błąd.

W szczególności błędem byłoby, gdyby jakiś warunek umowy licencyjnej spowodował naruszenie jakiegoś prawa obowiązującego w Twoim kraju lub w kraju, w którym znajduje się Twój serwer.

Inną kwestią jest to, że jeśli nie jesteś właścicielem kodu, nie masz nad nim kontroli i niekoniecznie rozumiesz wszystko, co robi i jak działa.

Oznacza to, że jeśli ktoś wprowadzi jakąś zmianę w kodzie, możesz utknąć w tej zmianie, szczególnie jeśli będziesz wiernie instalować aktualizacje, łatki, uaktualnienia i nowe wersje, gdy tylko zostaną wydane jako stabilne, lub jeśli całkowicie polegasz na dostarczaniu treści sieci dla rozwiązań innych firm.

3. Często dostajesz znacznie więcej, niż potrzebujesz

Kod strony trzeciej zwykle wykonuje to, czego chcesz, ale czasami zawiera wszelkiego rodzaju dodatkowe funkcje, których nie potrzebujesz i prawdopodobnie nigdy nie użyjesz.

W niektórych przypadkach nie można łatwo lub w ogóle usunąć tych dodatkowych funkcji. Być może będziesz musiał pójść na kompromis. Ta funkcja może zrobić coś bardzo zbliżonego do zamierzeń, ale nie dokładnie to, co zamierzasz. Sprzedajesz wspaniałość w zamian za mniej pracy, a to nie zawsze jest dobry handel.

4. Wiele poziomów zależności od osób trzecich może prowadzić do prawdziwych problemów

Wiele projektów open source wykorzystuje te same fragmenty kodu stron trzecich na różne sposoby do tworzenia oprogramowania. W większości przypadków nie jest to nic złego, ale może prowadzić do kłopotów.

Obecnie wielu programistów nawet nie instaluje używanych przez siebie fragmentów, ale pobiera je na żądanie z sieci dostarczania treści w czasie wykonywania. Niebezpieczeństwo tego zostało spektakularnie zilustrowane przez incydent z lewym padem w 2016 roku.

Każdy łańcuch jest tak mocny, jak jego najsłabsze ogniwo. Takie łączenie zależności oznacza, że ​​jeśli jakiekolwiek ogniwo w dowolnym miejscu łańcucha zostanie zerwane lub naruszone, cały łańcuch będzie narażony na ryzyko nieprawidłowego działania. W niektórych sytuacjach może to być dość kosztowne.

Nikt nie podejrzewałby mocy zawartej w 11 linijkach kodu zawartej w tej małej, łagodnej funkcji o nazwie Left-Pad, ale gdy to konkretne ogniwo łańcucha zawiodło, spowodowało to zatrzymanie działania wielu dużych witryn internetowych.

Główna część problemu polegała na tym, że większość osób korzystających z Left-Pad nie miała pojęcia, że ​​go używa, do czego służy ani jak rozwiązać problem. Jak stwierdzono w punkcie 2, jeśli nie jesteś jego właścicielem, niekoniecznie go rozumiesz.

Left-Pad to bardzo prosta funkcja, która po prostu dodaje kilka spacji po lewej stronie linii, aby upewnić się, że linia ma prawidłową długość. Problem w tym, że każdy kompetentny programista może z łatwością odtworzyć tę funkcjonalność.

Nie ma absolutnie potrzeby, aby jakakolwiek aplikacja była zależna od tej funkcji strony trzeciej, a mimo to tysiące witryn internetowych korzystało z oprogramowania, które ją zawierało, w tym Netflix, Facebook i Reddit. Szczęśliwym trafem w tym przypadku była to bardzo prosta funkcja, która przerwała łańcuch, a nie jakaś naprawdę skomplikowana funkcja posiadająca własny łańcuch zależności.

Najważniejsze jest to, że jeśli możesz go zbudować samodzielnie, prawdopodobnie powinieneś!

Ostatecznie decyzja o użyciu w projekcie bloków kodu stron trzecich sprowadza się do szeregu skomplikowanych decyzji, których nigdy nie należy podejmować lekko. Czynniki, które należy wziąć pod uwagę, to bezpieczeństwo, legalność, koszt, czas i stabilność.

Aby uprościć proces decyzyjny, prawdopodobnie pomocny będzie następujący warunek testowy.

JEŚLI którykolwiek z tych czynników jest prawdziwy:

  • żądana funkcja jest prosta
  • Ty (lub Twój zespół) macie możliwość stworzenia tej funkcji
  • jest mnóstwo czasu na utworzenie funkcji
  • Twoja aplikacja wymaga dobrego bezpieczeństwa
  • masz wątpliwości dotyczące potencjalnych problemów prawnych związanych z licencjonowaniem stron trzecich
  • ważne jest, aby Twoja aplikacja nigdy nie zawiodła

WTEDY powinieneś go zbudować samodzielnie,

W przeciwnym razie bardziej efektywne może być korzystanie z funkcji stron trzecich, pod warunkiem, że jesteś świadomy potencjalnych problemów i masz strategię dotyczącą tego, co zrobisz, jeśli takie problemy się pojawią.

Bogdan Rancea

Bogdan jest członkiem-założycielem Inspired Mag, posiadającym w tym okresie prawie 6 lat doświadczenia. W wolnym czasie lubi studiować muzykę klasyczną i zgłębiać sztuki wizualne. Ma też obsesję na punkcie fixies. Posiada już 5.

Komentarze Odpowiedzi 0

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Ocena *

Ta strona używa Akismet do redukcji spamu. Dowiedz się, jak przetwarzane są dane komentarza.