r   e   k   l   a   m   a
r   e   k   l   a   m   a

Wyvern zamiast HTML i JavaScriptu: bezpieczne programowanie aplikacji webowych według NSA

Strona główna AktualnościOPROGRAMOWANIE

Każdy, kto miał okazję zajmować się tworzeniem witryn i aplikacji webowych, przyzna, że nie jest to wdzięczne zajęcie. Programistyczny miszmasz, wątpliwej jakości frameworki, niekompatybilność przeglądarek (szczególnie mobilnych) – to wszystko sprawia, że webdeweloperzy z zazdrością mogą spoglądać na kolegów piszących w spójnych i dopracowanych natywnych środowiskach Microsoftu czy Apple. A gdyby tak zacząć od nowa i przynieść WWW pożądaną spójność? To właśnie chce zrobić amerykańska Agencja Bezpieczeństwa Narodowego (NSA) ze swoim projektem – językiem Wyvern.

Nazwa nowego projektu, zapożyczona od heraldycznej bestii – dwunogiego, skrzydlatego smoka – nie jest całkiem przypadkowa. W angielskiej i francuskiej heraldyce wywern symbolizuje ochronę, bezpieczeństwo i panowanie nad wieloma krajami. Jako język programowania, Wyvern ma pomóc deweloperom w pisaniu aplikacji i witryn bez konieczności korzystania z mieszanki JavaScriptu, HTML, CSS, PHP, XML, SQL, rozsianych po dziesiątkach i setkach plików kodu źródłowego i konfiguracji.

Jak tłumaczy jeden z głównych autorów języka, Jonathan Aldrich, współczesne aplikacje webowe są budowane z nieskoordynowanej mieszaniny artefaktów stworzonych w różnych językach, formatach plików i technologiach. Aplikacja może np. korzystać z JavaScriptu po stronie klienta, HTML dla opisania struktury, CSS dla prezentacji, XML dla ajaksowej komunikacji, a do tego mieszanki Javy, plików konfiguracyjnych i oprogramowania bazodanowego po stronie serwera. Ta różnorodność zwiększa koszt nauki niezbędnych technik programistycznych, utrudniając zarazem całościowe zabezpieczenie oprogramowania.

r   e   k   l   a   m   a

Zadania NSA nie ograniczają się tylko do szpiegowania internautów (czy nawet do polowania na terrorystów w świecie World of Warcraft) – obowiązkiem agencji jest dbanie o cyfrowe bezpieczeństwo Stanów Zjednoczonych. Stąd właśnie idea Wyverna: tak jak skarb strzeżony przez mityczną bestię uważany jest za bezpieczny, tak też oprogramowanie napisane w Wyvernie będzie znacznie bezpieczniejsze niż to, co uzyskać można dziś, z wykorzystaniem wspomnianej wyżej mieszanki.

Wyvern ma automatycznie ustalać, z jakiego podjęzyka ma korzystać na podstawie typu danych, który aktualnie jest przez programistę używany. Mogą być to zarówno proste ciągi alfanumeryczne czy liczby zmiennoprzecinkowe, jak i bardziej złożone struktury danych, takie jak strony WWW czy kwerendy do baz danych. Twórcy języka porównują jego możliwości ze zdolnym negocjatorem – dyplomatą, który płynnie przechodzi między różnymi językami, rozmawiając z członkami wielonarodowego zespołu, tak by umożliwić ich współpracę.

W ten sposób Wyvern ma np. wyeliminować wszystkie zagrożenia związane z atakami typu SQL Injection, gdzie wykorzystuje się zdeformowany ciąg znaków do wywołania pożądanej przez napastnika operacji na bazie danych, wykorzystując to, że w często w programie może dochodzić do łączenia łańcuchów znaków, z których budowane jest następnie polecenie w języku SQL. W ten sposób, wykorzystując formularz logowania sklepu internetowego można np. zmusić aplikację do wyświetlenia listy użytkowników sklepu internetowego. Programowanie w Wyvernie ma całkowicie wyeliminować takie „ręczne” operacje na łańcuchach, eliminując samą możliwość ataku tego typu.

Co szczególnie ciekawe, obok standardowo osadzonych w Wyvernie podjęzyków, będzie można korzystać z nowych, po ich uprzednim zdefiniowaniu, bez martwienia się o to, jak zostaną wykorzystane. W ten sposób język ten będzie mógł być wykorzystywany do bardzo różnego typu aplikacji – nic nie stoi na przeszkodzie, by np. pisana w nim aplikacja z modułami statystycznymi korzystała z możliwości specjalistycznego języka R, a aplikacja z modułem sztucznej inteligencji – miała dostęp do LISP-a czy Prologu.

Wyvern jest rozwijany na wolnej licencji GPLv2 i obecnie jest wciąż projektem rozwojowym, eksperymentalnym. Wersji stabilnej języka powinniśmy spodziewać się jeszcze w tym roku. Do jego uruchomienia należy mieć zainstalowaną w systemie Javę 8, do kompilacji zaleca się zaś stosowanie środowiska programistycznego, takiego jak np. Eclipse Kepler czy IntelliJ 13+. Zainteresowani formalną specyfikacją języka i przykładowymi programami powinni odwiedzić stronę Jonathana Aldricha. Kod źródłowy znajdziecie tymczasem na GitHubie.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.