Przez całą drogę z Brisbane w stanie Queensland DreamHost rozmawia z nauczycielem bezpieczeństwa Laravel, Stephenem Rees-Carterem. Stephen jest konsultantem ds. bezpieczeństwa specjalizującym się w audytach bezpieczeństwa witryn Laravel i PHP.
Oprócz tego, że jest konsultantem ds. bezpieczeństwa, Stephen organizuje także różne warsztaty i szkolenia dotyczące bezpieczeństwa dla zespołów programistycznych. Nauki te skupiają się na programistach, aby myśleli jak eksperci techniczni, aby pomóc im napisać bezpieczny kod i zidentyfikować słabe punkty, które mogą wykorzystać hakerzy. Stephen przemawia także na konferencjach poświęconych bezpieczeństwu, a w wolnym czasie tworzy biuletyny.
Shahzeb: Witaj Stephen, dziękuję za poświęcenie czasu na ten wywiad. Zanim zaczniemy, czy możesz nam powiedzieć trochę o sobie, aby nasi czytelnicy mogli Cię lepiej poznać?
Stefan: Jasne. Nazywam się Stephena Reesa-Cartera i mieszkam w Brisbane w Australii. Jestem wielkim fanem Tolkiena – filmy Władca Pierścieni są, moim zdaniem, najlepszymi filmami, jakie kiedykolwiek powstały – i w większości rzeczy, które robię, znajdziesz odniesienia do Tolkiena.
Jestem programistą, odkąd w mojej szkole średniej dodano klasę „projektowanie i tworzenie oprogramowania”. Poszedłem na uniwersytet, studiowałem inżynierię oprogramowania i dostałem pierwszą pracę jako programista pracując z Zend Framework (1) u lokalnego dostawcy usług hostingowych.
Znajomy zatrudnił mnie do swojej firmy zajmującej się produktami zabezpieczającymi 10 lat temu i to zapoczątkowało moją podróż w kierunku uczenia się i pokochania bezpieczeństwa. Od tego czasu spędziłem rok na czyszczeniu zaatakowanych przez hakerów witryn WordPress pod adresem Wordfenceukończył dwa certyfikaty bezpieczeństwa (Security+ i CEH), a niedawno przeszedł z pełnoetatowego programisty do konsultanta ds. bezpieczeństwa.
Na początku roku uruchomiłem moją firmę zajmującą się audytami bezpieczeństwa Laravel i testami penetracyjnymi i od tego czasu spędziłem wiele godzin pracy czytając kod innych osób i próbując włamać się do ich aplikacji. To świetna zabawa!
Shahzeb: Czy możesz podzielić się swoją podróżą z Laravelem? Jakieś doświadczenia ze swojej kariery, które uważasz za interesujące i którymi chciałbyś się podzielić z naszą publicznością?
Stefan: Po raz pierwszy usłyszałem o Laravel od znajomego, z którym pracowałem w 2013 roku. Byliśmy na linux.conf.au w Canberze i wspomniał, że bawi się nowym frameworkiem o nazwie „Laravel”, który może mi się spodobać. W tamtym czasie uważałem Zend Framework za swój ulubiony framework, ale ZF2 został niedawno wypuszczony i doświadczenia programistów były absolutnie okropne – w ogóle nie byłem z niego zadowolony.
I tak pojawił się nowy framework o nazwie Laravel – wypróbowałem nadchodzącą wersję 4 i bardzo mi się spodobała. Ułatwiło mi to życie jako programisty, a to było dla mnie ważne.
Od tamtej pory trzymam się Laravela, ponieważ sprawia, że tworzenie oprogramowania jest przyjemne i to wpływa na moje wybory przez całą moją karierę. Nie tylko pod względem frameworków, ale także wzorców projektowania kodu i narzędzi.
Jeśli masz wybór pomiędzy przestrzeganiem żmudnych i rygorystycznych „najlepszych praktyk” lub elegancko prostymi, ale nie „najlepszymi praktykami”, wybierz metodę, która sprawia Ci przyjemność i dostosuj ją do własnych potrzeb. Właśnie dlatego używam Laravela, dlaczego używam niektórych fasad, a nie innych i dlaczego używam Windows 11 z WSL2. Wszystkie te wybory sprawiają, że kocham rozwój.
Dlatego też przerzuciłem się na bezpieczeństwo. Bezpieczeństwo zawsze mnie fascynowało (myślę, że zaczęło się to wcześnie od zamiłowania do łamigłówek i magii), a z biegiem lat, gdy pojawiały się możliwości skupienia się bardziej na stronie bezpieczeństwa w rozwoju, wybierałem tę ścieżkę do eksploracji, ponieważ odkryłem, że to ciekawe i przyjemne.
Shahzeb: Czy był jakiś szczególny powód, dla którego zdecydowałeś się pracować z Laravelem zamiast innymi dostępnymi frameworkami? Jakie znaczenie ma dla Ciebie używanie Laravela?
Stefan: Jak już mówiłem, wybrałem Laravel, ponieważ sprawiał, że tworzenie oprogramowania było przyjemne w czasach, gdy miałem trudności z wykorzystaniem istniejących narzędzi, które posiadałem. To jest siła Laravela – nieustannie dąży do tego, aby rozwój był przyjemny. Kiedy siadam do pisania kodu, chcę cieszyć się tym doświadczeniem i mieć poczucie, że moje narzędzia mi pomagają, a nie walczą ze mną.
Kolejnym aspektem Laravela, który uwielbiam, jest wrodzona znajomość frameworka – pracowało nad nim tak wiele osób, że istnieje wiele drobnych poprawek i funkcji, które rozwiązują wiele skrajnych przypadków, których normalnie nawet nie brałeś pod uwagę.
Ułatwia to życie programisty, ponieważ nie musisz się martwić o przypadki brzegowe – i to samo dotyczy bezpieczeństwa. Jest tak wiele subtelnych funkcji bezpieczeństwa, że programiści nie posiadający wiedzy na temat bezpieczeństwa naprawdę łatwo mogą stworzyć bezpieczną aplikację.
Shahzeb: Stworzyłeś Bezpieczeństwo Laravela in Depth, bonus dla programistów Laravel. Jak wpadłeś na pomysł?
Stefan: Laravel Security in Depth powstał, gdy przygotowywałem się do wygłoszenia wykładu na Laracon w Internecie we wrześniu 2021. W tym czasie miałem przerwę w pracy ze względu na wypalenie zawodowe i zastanawiałem się, co chcę dalej robić.
Świetnie się bawiłem, przygotowując moje wystąpienie i naprawdę chciałem zrobić więcej, aby uczyć programistów. Zastanawiałem się nad napisaniem kursu lub książki, ale wszyscy to robią, a ja chciałem spróbować czegoś nieco innego… więc zdecydowałem się uruchomić płatną listę mailingową, której celem było nauczenie programistów Laravela o bezpieczeństwie poza moimi wykładami.
Shahzeb: Co skłoniło Cię do stworzenia strony internetowej poświęconej bezpieczeństwu Laravel?
Stefan: Bezpieczeństwo jest tematem niedocenianym w społecznościach programistów, a zwłaszcza społeczności Laravel. Jest to częściowo wina Laravela, który jest tak bezpieczny od razu po wyjęciu z pudełka – programiści często myślą, że nie muszą się tym martwić, ponieważ framework sobie z tym poradzi – ale nadal jest to niezwykle ważne. Chciałem więc zmienić sposób myślenia i pomóc programistom pomyśleć o bezpieczeństwie i sposobach pisania bezpiecznego kodu.
Shahzeb: Jak myślisz, jakie są główne korzyści, jakie programiści czerpią ze strony internetowej Laravel Security in Depth?
Stefan: Najważniejszą rzeczą, którą chcę przekazać, jest miłość do bezpieczeństwa. Staram się, aby każdy e-mail był zabawny i interesujący, i szukam najlepszego sposobu na nauczanie tematu, w którym ludzie nie przestaną się nudzić i nie stracą zainteresowania. Właśnie dlatego stworzyłem celowo podatną na ataki witrynę demonstracyjną dla Laravel Security in Depth.
Podczas nauczania o luce w zabezpieczeniach, np Skrypty między witrynami (XSS)znacznie łatwiej jest sobie z tym poradzić, jeśli potrafisz samodzielnie wykorzystać tę lukę, dlatego przygotowałem serię wyzwań, które czytelnicy mogą wykonać, aby dowiedzieć się, jak działa XSS – ale przeprowadzając prawdziwe ataki XSS we własnych przeglądarkach.
Shahzeb: Przez lata pracowałeś nad wieloma pobocznymi projektami. Co czytelnicy powinni wiedzieć o wszystkich rzeczach, które obecnie robisz w Laravel?
Stefan: Poza audytami bezpieczeństwa Laravel i listą mailingową mam trzy główne projekty:
Pierwsza to WithExtraVeg, firma mojej żony. Jest wegańską dietetyczką, która zapewnia plany posiłków i pomoc żywieniową rodzinom wegańskim. Zajmuję się techniczną stroną firmy oraz buduję i utrzymuję system planów posiłków.
Jeden z dwóch pozostałych projektów jest technicznie publiczny, chociaż jest na bardzo wczesnym etapie i jeszcze nie nadaje się do użytku. Buduję zestaw narzędzi typu open source do sprawdzania bezpieczeństwa witryn i kodu PHP. Moim zamiarem jest zamknięcie wszystkich skryptowalnych fragmentów przepływu pracy podczas audytu bezpieczeństwa w jednym narzędziu. Jestem pewien, że znajdziesz, jeśli jesteś zainteresowany. 😉
Mój trzeci to tajny projekt, który mam nadzieję wystartować w ciągu najbliższych kilku miesięcy. (Wskazówka: dotyczy edukacji programistów).
Shahzeb: Co skłoniło Cię do zostania programistą stron internetowych Laravel i konsultantem ds. bezpieczeństwa? Kim byli Twoi mentorzy i inspiracje w tej podróży?
Stefan: Samo doświadczenie kodowania w Laravel przyciągnęło mnie do społeczności, chociaż skłamałbym, gdybym powiedział, że to był jedyny wpływ. Dayle Rees i Jeffery Way (tj Laracasty) to dwa największe czynniki, które wywarły na mnie duży wpływ na moje początki w Laravelu, zwłaszcza nauczanie przez Jeffery’ego eleganckiego kodu i przyjęcie projektów związanych z Fasadami – zamiast trzymania się „najlepszych praktyk”.
Miałem też fantastycznego menedżera w jednej z moich prac, który codziennie rzucał mi wyzwania, abym napisał lepszy kod – co zmusiło mnie do zastanowienia się nad „dlaczego” moich wyborów związanych z kodowaniem.
Największy wpływ na moją podróż w dziedzinie bezpieczeństwa ma Troya Hunta. Na początku mojej przygody z bezpieczeństwem uczestniczyłem w jego warsztatach „Najpierw włam się” i bardzo mi się podobało. Pomysł, że jeśli wiesz, jak hakować i wykorzystywać luki, będziesz lepiej bronić swoich rzeczy, zmienił zasady gry.
Shahzeb: Zauważyłem, że lubisz przemawiać na konferencjach Laracon. Na jaki temat będziecie rozmawiać w tym roku? I dlaczego?
Stefan: Szczerze nie mam pojęcia! 🤣
Podczas mojego pierwszego wykładu z Laraconem włamałem się do aplikacji, a drugim włamałem się do serwera stojącego za aplikacją – jest to kontynuacja mojego pierwszego wykładu. Gdzie więc dalej zabrać się za serial? Rozważałem rozważenie czegoś takiego jak Vapor (tj. hackowanie bezserwerowe), ale nie wiem wystarczająco dużo o bezserwerowym, aby wiedzieć, co jest możliwe w tej dziedzinie. Może zamiast tego napiszę prequel i zhakuję programistę?
Shahzeb: Jaki typ hostingu wolisz? Jakie są Twoim zdaniem korzyści z hostowania witryny u dostawcy rozwiązań zarządzanych zamiast w przypadku konwencjonalnego hostingu współdzielonego?
Stefan: Wszystkie moje rzeczy są hostowane na DigitalOcean, w narzędziu do zarządzania serwerami do zarządzania serwerami, chociaż chcę uruchomić projekt na Vapor, aby móc poczuć, jak to działa. Ale zarządzam własnymi serwerami, odkąd 15 lat temu pracowałem u hosta internetowego, więc mam dobre pojęcie o tym, co robię.
Osobie, która nie ma doświadczenia w zarządzaniu serwerami ani doświadczenia w AWS, poleciłbym dostawcę rozwiązań zarządzanych, który może zarządzać infrastrukturą za Ciebie. To tylko jedna rzecz mniej, o którą musisz się martwić, dzięki czemu możesz skoncentrować się na swoim kodzie.
Dostawca może martwić się aktualizacjami, przestojami i skalowaniem, aby zarządzać obciążeniem. Wszystko to jest bolesne, jeśli nie masz już doświadczenia.
Jeśli nie możesz skorzystać z usług dostawcy usług zarządzanych, skorzystaj z narzędzi do zarządzania serwerem zamiast hostingu współdzielonego. To przepis na katastrofę – mam kilka strasznych historii z czasów, gdy pracowałem u dostawcy usług hostingowych i w Wordfence… ale to temat na inną okazję.
Shahzeb: Jak ważny jest Twoim zdaniem hosting zarządzany dla programistów Laravel? Jakie wartości wnosi to do ich rozwoju i jak wpływa to na ich przepływ pracy?
Stefan: Myślę, że zależy to od projektu i umiejętności programisty, ale ogólnie rzecz biorąc, posiadanie kogoś innego zarządzającego infrastrukturą oznacza, że programista ma o jedną rzecz mniej do załatwienia samodzielnie.
Shahzeb: Co sądzisz o rozwiązaniach do zarządzanego hostingu, takich jak DreamHost, które zapewniają zoptymalizowany stos PHP i oferują framework Laravel za pomocą jednego kliknięcia z funkcjami wdrażania aplikacji internetowych?
Stefan: Nie znam się specjalnie na DreamHost, ale celem hostingu zarządzanego jest ułatwienie życia programistom. Jeśli narzędzie oszczędza im czas i wysiłek związany z zarządzaniem infrastrukturą oraz zapewnia bezpieczeństwo i niezawodność, bez konieczności skakania przez przeszkody, to dobrze.
Tworzenie narzędzi dostosowanych do frameworka jest zdecydowaną zaletą – im mniej wysiłku wymaga użycie narzędzia, tym więcej korzyści odniesie z niego programista.
Shahzeb: Z kim powinniśmy przeprowadzić następny wywiad i dlaczego?
Stefan: Michał Dyrynda – jest Australijczykiem i robi wiele dla społeczności Laravel. Organizuje Laracon Australia (zapytaj go, kiedy będzie następny!) i współgospodarzem Podcast Laravel News.
Shahzeb: Stephen, jestem pewien, że wiele osób robiło notatki. Jestem też pewien, że chętnie zobaczą zdjęcie Twojej stacji roboczej, jeśli chcesz je udostępnić!
Stefan: Chętnie się podzielę!
Dla tych, którzy się zastanawiają, to jest mój ukochany X1 Carbon, 14-calowy laptop, na którym robię wszystko. Z używania wielu monitorów zrezygnowałem wiele lat temu – kiedy mój najstarszy syn był jeszcze mały. Pracowałem wszędzie tam, gdzie się bawił, w domu i poza nim, i wkrótce doszedłem do punktu, w którym próba użycia drugiego monitora (lub nawet innego rozmiaru) spowalniała mnie. Posiadanie wirtualnych pulpitów w systemie Windows naprawdę robi różnicę.
Shahzeb: Dziękuję jeszcze raz, Stephenie Rees-Carter!