Steffen ma dobre uwagi w swojej odpowiedzi, ale chciałbym to dodać. Myślę, że powód można podzielić na następujące tematy:
- Brak wiedzy lub wykształcenia programistów
- Odejście w środowisku programistycznym przedsiębiorstwa
- Presja, aby działać przed terminem
- Niewystarczający nacisk z góry na bezpieczeństwo
Rozważmy to.
Szkolenie programistów
W dzisiejszych czasach duży nacisk kładzie się na edukację użytkowników. Naucz użytkowników, jak utrzymywać silne hasła. Naucz użytkowników, jak rozpoznawać phishing. Naucz użytkowników, jak ... Masz pomysł. Niektórych przedsiębiorstw zapewne dużo, ale mogę mówić tylko o swoim doświadczeniu zawodowym i nie pracowałem w wielu przedsiębiorstwach;), mam programy szkoleniowe. Ale te programy szkoleniowe mogą być niekompletne lub nie obejmować wymaganej wiedzy. Nie chodzi o dyskredytację ciężkiej pracy włożonej w tworzenie tych programów. Ale powiedzieć, że tak jak w środowisku szkolnym, różni ludzie uczą się inaczej. A jeśli nie masz programu kształcenia ustawicznego dla programistów, trudno będzie się komunikować „używaj zapytań parametrycznych, a oto jak to zrobić w PHP, Java, Python, Ruby, Scala, NodeJS, ...”. Tworzenie, dostarczanie i utrzymywanie programów deweloperskich, które skutecznie docierają do odbiorców, to ciężka praca.
Odejście deweloperów
Powyżej jedną z rzeczy, o których wspomniałem, było skuteczne docieranie do odbiorców w celu uzyskania różnych rodzajów uczenia się. Jednym z powodów jest to, że wiele przedsiębiorstw ma wysoki wskaźnik rezygnacji z deweloperów, ponieważ deweloperzy są wykonawcami, którzy są przenoszeni z projektu do projektu w różnych firmach. A firmy nie zawsze mają taką samą dojrzałość bezpieczeństwa. Jedna firma może w ogóle nie mieć programu bezpieczeństwa, podczas gdy inna może mieć doskonały program bezpieczeństwa, a programista jest nagle bombardowany nowymi informacjami, które będą od nich wymagane przez całe sześć miesięcy, zanim przeniosą się do innej firmy. To smutne, ale się zdarza.
Realizacja projektu
Realizacja projektu zgodnie z harmonogramem lub nawet przed terminem. Najszybszą drogą do ukończenia projektu zwykle niestety nie jest zakończenie projektu kontrolą bezpieczeństwa. Robi to w najbardziej zepsuty sposób, który wciąż działa. Wiemy, że przyniesie to więcej pracy, czasu i pieniędzy później, gdy przyjdzie czas na utrzymanie projektu i naprawienie problemów, ale zarząd chce tylko, aby projekt został usunięty.
opracowywanie programów szkoleniowych w zakresie bezpieczeństwa dla niezliczonych języków programowania. Wiele przedsiębiorstw nie ma jednego lub dwóch ustawionych języków. Dlatego programiści lubią (lub są do tego zachęcani) wypróbowywanie nowej wersji. Obejmuje to języki i frameworki. Oznacza to, że programy bezpieczeństwa muszą stale ewoluować.
Zaangażowanie kierownictwa
A oto zarządzanie. Za każdym razem wydaje się, że w przypadku naruszenia bezpieczeństwa publicznego istniały kontrole, które można było wdrożyć, które nie są takie trudne, ale zostały pominięte. Naciska na dostarczanie produktów jako pierwsze, a martwienie się zawsze na drugim miejscu, pomimo lekcji po lekcji, wraca do firm zajmujących się produktami. Kierownictwo musi naciskać od góry, aby na początku poświęcić trochę czasu na zbudowanie bezpieczeństwa. Muszą zrozumieć, że więcej pracy, więcej czasu i więcej pieniędzy zostanie przeznaczonych na naprawę problemów, konserwację produktu i zapłacenie kar. Jednak analizy kosztów i korzyści wskazują, że problemem jest dostawa produktu, a nie grzywny lub wymagane prace konserwacyjne. Te równania muszą się zmienić, a to częściowo sprowadza się do edukacji (wooo, pełne koło) na poziomie MBA. Menedżerów biznesowych trzeba nauczyć, że aby odnieść sukces w środowisku stale rosnących naruszeń, bezpieczeństwo musi być najważniejsze.
Podsumowanie
Dlaczego, mimo że SQLi ma prawie 20 lat , ma kilka powodów. Jako praktycy bezpieczeństwa możemy zrobić tylko tyle, aby edukować i podnosić świadomość tego, co się dzieje, gdy bezpieczeństwo nie jest uważane za integralną część SDLC.