Niebezpieczne CV

Znalazłem w sieci ofertę osoby poszukującej pracy w zakresie szeroko pojętej działalności webmasterskiej. Do oferty było dołączone portfolio z przykładowymi rozwiązaniami. Po przyjrzeniu się zamieszczonemu tam kodowi źródłowemu doszedłem do wniosku, że czasami lepiej nie ujawniać publicznie, co też się potrafi - a raczej - czego się nie potrafi. Jakże cenne w takich przypadkach okazują się skompilowane wersje programów, gdzie niedostatki kodu nie rzucają się w oczy aż tak łatwo. Rozumiem tym samym, co czują przeciwnicy jawności oprogramowania.

Znalazłem w sieci ofertę osoby poszukującej pracy w zakresie szeroko pojętej działalności webmasterskiej. Do oferty było dołączone portfolio z przykładowymi rozwiązaniami. Po przyjrzeniu się zamieszczonemu tam kodowi źródłowemu doszedłem do wniosku, że czasami lepiej nie ujawniać publicznie, co też się potrafi - a raczej - czego się nie potrafi. Jakże cenne w takich przypadkach okazują się skompilowane wersje programów, gdzie niedostatki kodu nie rzucają się w oczy aż tak łatwo. Rozumiem tym samym, co czują przeciwnicy jawności oprogramowania.

Każdy, kto kiedykolwiek parał się wytwarzaniem oprogramowania, wie z własnego podwórka, jak niedoskonałe były pierwsze jego produkty. Takie szkolne błędy popełniają wszyscy początkujący i chyba nie ma na to rady. Stąd też wynajmowanie studentów do tworzenia kodu jest działaniem obarczonym sporym ryzykiem - chyba, że istnieje doskonała kontrola jakości, w co szczerze wątpię. Tak czy siak, na czymś trzeba się uczyć. Udając się do pracy w "młodym, dynamicznym zespole" adept sztuki programistycznej może liczyć na całkowite pobłażanie. A także na niskie zarobki - jak zauważono na pewnej liście dyskusyjnej, zastanawiając się po jakiego grzyba w anonsach zamieszcza się tego typu uwarunkowania. Właśnie dlatego, że chodzi o pracowników bez doświadczenia, a więc też bez wygórowanych (czytaj: adekwatnych do umiejętności) żądań zarobkowych.

Niejeden obcy kod programu dane mi było w życiu analizować. Ostatnio czasy sprzyjają otwartości, stąd szerzej udostępniają zainteresowanej publice robótki ręczne zmajstrowane przy pomocy PHP lub Javy. Tak też można sobie to poczytać, jeżeli kogoś interesuje i jeżeli zna owe języki. Mam takiego pecha, że ostatnimi czasy "przerabiałem" studenckie komercyjne knoty w PHP. Ludzie, co tam się wewnątrz nie wyprawia! Co gorsza, produkty takie są sprzedawane i używane - przynajmniej do czasu wystąpienia pierwszych błędów lub konieczności wykonania drobnych zmian.

Wracając do portfolio wzmiankowanego na początku felietonu, pragnę jedynie zwrócić uwagę na fakt, że młody człowiek, przedstawiający się jako świeżo dyplomowany technik informatyk, niemniej z kilkuletnim doświadczeniem, był łaskaw zaprodukować się z fragmentem kodu w PHP. Pechowo dla niego był to motyw dotyczący logowania się do sqlowej bazy danych, a więc temat wybrany niefortunnie przy braku dostatecznej wiedzy dotyczącej bezpieczeństwa tej sekwencji. Już na pierwszy rzut oka było widać, że kod w łatwy sposób dopuszcza przełamanie bariery bezpieczeństwa na zasadzie SQL-injection. I czym się tu chwalić?

Brak należytych zabezpieczeń na tym etapie nie jest li tylko domeną serwisów internetowych. W każdym oprogramowaniu w architekturze klient-serwer, gdzie identyfikator logowania użytkownika musi być zweryfikowany z wartościami zapamiętanymi w tabelach bazy danych, odbywa się to przy pomocy podobnej zasady, a więc programowego podstawienia identyfikatora do instrukcji w języku SQL. I nie otwartość oprogramowania jest tu problemem. Każdy zaś system łatwo przetestować na okoliczność podatności na przełamanie barier ochronnych. Wystarczy sprawdzić, czy w polu identyfikatora użytkownika można dodatkowo podać znak apostrofu, który zazwyczaj skutecznie ucina starania aplikacji o należytą autoryzację. Radzę wykonać tę prostą próbę w swoich firmowych systemach. Każdy poprawnie napisany program powinien zawsze prezentować zasadę, że nigdy nie należy bezkrytycznie ufać danym pochodzącym od użytkowników.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200