Opieram się na PHP CLI dla wszelkiego rodzaju osobistych i (miejmy nadzieję, wkrótce) profesjonalnych / krytycznych "logiki biznesowej". (Może to być dowolny inny język i dokładnie ten sam problem nadal istniałby; po prostu stwierdzam, czego osobiście używam ze względu na kontekst).
W największym możliwym stopniu zawsze koduję wszystko na mój własny. Tylko wtedy, gdy jest to absolutnie konieczne, niechętnie korzystam z biblioteki zewnętrznej. W niektórych przypadkach jest to po prostu konieczne. Na przykład parsowanie e-maili i inne bardzo skomplikowane rzeczy.
Do zarządzania takimi bibliotekami firm zewnętrznych używam PHP Composer. To menedżer biblioteki dla PHP. Jest w stanie pobierać biblioteki i ich zależności oraz aktualizować je za pomocą poleceń podobnych do innych „menedżerów pakietów”. W praktyce jest to dużo przyjemniejsze niż ręczne śledzenie tego i ręczne pobieranie plików ZIP, rozpakowywanie ich i rozwiązywanie wszelkiego rodzaju problemów. Oszczędza to przynajmniej wielu praktycznych problemów.
Jednak nadal występuje najbardziej podstawowy problem bezpieczeństwa: nie mam pojęcia, co to „zainstalowane” kod zawiera, ani nie wiem, co jest dodawane / zmieniane przy każdej aktualizacji. Jeden z autorów bibliotek mógł łatwo zostać przejęty pewnego dnia, gdy mój Composer pobierze aktualizacje, powodując, że moje skrypty PHP CLI nagle wysyłają mój portfel Bitcoin wallet.dat na jakiś zdalny serwer, instalują RAT / trojana na moim komputerze lub nawet gorzej. Właściwie to mogło się już wydarzyć, a ja nie byłbym mądrzejszy. Po prostu nie mam pojęcia. Logicznie nie mam pojęcia.
Moja własna baza kodu obejmuje łącznie około 15 000 wierszy. Skrupulatne przejrzenie tej bazy kodu zajmuje mi ponad rok. I to jest kod, który ja napisałem i który znam dobrze ...
Moje drzewo katalogów „Composer” ma obecnie ponad 120 000 linii kodu . I to dla minimalnej liczby kluczowych bibliotek PHP, których potrzebuję. Używam bardzo niewielu, ale mają różne zależności i ogólnie wydają się być bardzo rozdęte / napompowane w porównaniu z moim własnym kodem.
Jak mam kiedykolwiek „sprawdzić” to wszystko ?! To się po prostu nie wydarzy. Odwracam się bardzo krótko po próbie. Nie wiem nawet, jak przejdę przez kolejną „rundę weterynarza” mojego własnego kodu - nie mówiąc już o tym 10-krotnie większym, kodowanym przez innych ludzi.
Kiedy ludzie mówią, że „weryfikacja kodu firm trzecich” jest „obowiązkowa”, co dokładnie mają na myśli? Zgadzam się też, że to „konieczność”, ale jest też nieznośna rzeczywistość. Po prostu nigdy nie będę miał na to czasu i energii. Poza tym oczywiście nie mam pieniędzy, by zapłacić komuś innemu.
Spędziłem niezliczone godziny, próbując poznać Docker i sprawdzić, czy jest jakiś sposób, „hermetyzować” te niezaufane biblioteki innych firm, ale to przegrana bitwa. Okazało się, że to absolutnie niemożliwe, lub mam odpowiedź na którekolwiek z moich wielu pytań w tym zakresie. Nie wydaje mi się nawet, żeby było to możliwe w sposób, w jaki to sobie wyobrażam.