Bardzo dobra znajomość języka FooBar i bezpieczeństwo
Od czasu do czasu pojawiają się oferty pracy dla osoby, która ma zajmować się bezpieczeństwem tworzonej aplikacji (webowej), między innymi projektowaniem architektury bezpieczeństwa tej aplikacji. Na podstawie takiego ogłoszenia można typować w jakim języku napisana jest dana aplikacja (tak, zwykle w FooBar). I tu pojawia mi się wątpliwość, czy rzeczywiście przy tego typu stanowisku ta “bardzo dobra znajomość” jest rzeczywiście niezbędna.
Po pierwsze bezpieczeństwo jest w znacznym stopniu uniwersalne, niezależnie od tego, w jakim języku aplikacja jest tworzona. Jeśli popatrzeć na listę OWASP Top10 2010, to praktycznie nie ma tam żadnej pozycji specyficznej dla FooBar. Trochę to inaczej wyglądało w OWASP Top10 2007, gdzie na liście znalazło się Malicious File Execution, ale to już trochę inna bajka.
Druga sprawa – bezpieczeństwo aplikacji (i jej architektury) tylko w części zależy od bezpieczeństwa kodu napisanego w języku FooBar i specyficznych dla tego właśnie języka rozwiązań czy wzorców projektowych. A co choćby z HTML, JavaScript, Flash, mechanizmami bezpieczeństwa przeglądarki (choćby tymi podstawowymi), kryptografią?
Przykład – jak doskonała znajomość FooBar pomoże w rozwiązaniu prostego problemu: w jaki sposób serwować content pochodzący od niezaufanego użytkownika? Niech będzie to prosty, klasyczny przykład z forum lub blogiem, gdzie tym niezaufanym contentem są posty innych użytkowników. Pojęcia takie jak XSS, CSRF, same-origin policy na 99,9%25 pozostaną poza ową doskonałą znajomością FooBar.
Podsumowując – wydaje mi się, że poszukiwanie osoby, która ma być odpowiedzialna za bezpieczeństwo aplikacji (w tym jej architekturę bezpieczeństwa) kładąc głównie nacisk na “bardzo dobrą znajomość” języka, w którym ta aplikacja powstaje (w zasadzie – jednego z co najmniej kilku języków wykorzystywanych w projekcie), zawęża problem. Nie twierdzę, że pewien poziom znajomości języka nie jest wymagany/przydatny, ale niekoniecznie jest to kluczowy wyznacznik kompetencji w tym przypadku.
Przy okazji – widziałem kilka aplikacji, których architektura (ogólnie architektura, a nie architektura bezpieczeństwa) była wynikiem radosnej twórczości architekta doskonale znającego dany język. Często był to nieuzasadniony przerost formy nad treścią (ktoś pamięta jeszcze KISS), z którego wynikało wiele problemów, związanych nie tylko z bezpieczeństwem. Po prostu architektura była zdecydowanie zbyt wymyślna w stosunku do zastosowania, w którym dana aplikacja miała być wykorzystywana. Obrazowo: samochód terenowy i prom kosmiczny mają nieco różne wymagania i obłożenie tego pierwszego osłoną termiczną oraz zwielokrotnienie części systemów (niezawodność, korekcja błędów) niekoniecznie mają w tym przypadku sens. W tym zastosowaniu może lepszy jest projekt prosty jak budowa cepa, w którym nie ma się co popsuć, i który w razie czego można naprawić przy pomocy młotka.
Oryginał tego wpisu dostępny jest pod adresem Bardzo dobra znajomość języka FooBar i bezpieczeństwo
Autor: Paweł Goleń