Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00240 009229 10485050 na godz. na dobę w sumie
Hack Proofing Your Web Applications. Edycja polska - książka
Hack Proofing Your Web Applications. Edycja polska - książka
Autor: , Liczba stron: 408
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-006-5 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> hacking >> bezpieczeństwo www
Porównaj ceny (książka, ebook, audiobook).
Wyczerpujący przewodnik wprowadzający w arkana tworzenia bezpiecznych aplikacji WWW. Twórca aplikacji WWW nie może sobie pozwolić na to, by jego dzieła były wrażliwe na ataki hakerów.

Zacznij więc myśleć jak haker, a luki w bezpieczeństwie natychmiast się ujawnią. Dzięki tej książce nauczysz się analizować metody stosowane do włamań i ataków na witryny WWW. Będziesz mógł następnie wykorzystać tę wiedzę, by zapobiegać atakom.

  1. Powstrzymaj hakera myśląc tak, jak on.
    Poznaj sposoby włamania na Twoją własną witrynę i naucz się zapobiegać różnym rodzajom ataków.
  2. Nie bądź maszynką do kodowania.
    Poznaj zasady prowadzące do twórczego pisania aplikacji.
  3. Poznaj ryzyko związane z kodem przenośnym.
    Zdobądź wiedzę o tym, w jaki sposób kod przenośny wpływa na bezpieczeństwo po stronie klienta i jak tworzyć bezpieczny kod.
  4. Pisz bezpieczne skrypty CGI.
    Poznaj zalety skryptów CGI i opanuj zasady tworzenia bezpiecznych skryptów.
  5. Naucz się efektywnie śledzić wykonanie programu.
    Dowiedz się, jak analizować wykonanie programu, by wykryć jego słabe punkty.
  6. Zabezpiecz swoje aplikacje.
    Opanuj podstawy PKI i zobacz, jak zastosować je w aplikacjach WWW.
  7. Bezpieczne ActiveX.
    Poznaj metodologię tworzenia bezpiecznych kontrolek ActiveX.
  8. Zabezpiecz swój kod.
    Dowiedz się, jak pisać bezpieczny kod w XML-u, ColdFusion, Javie i innych językach!
  9. Pracuj zgodnie z planem bezpieczeństwa.
    Postępuj zgodnie z wytycznymi dotyczącymi analizy kodu i poznaj jego słabe punkty.
W książce omówiono m.in.
Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Hack Proofing Your Web Applications. Edycja polska Autorzy: Jeff Forristal, Julie Traxler T³umaczenie: Miko³aj Barwicki ISBN: 83-7361-006-5 Tytu³ orygina³u: Hack Proofing Your Web Applications Format: B5, stron: 406 Przyk³ady na ftp: 22 kB Wyczerpuj¹cy przewodnik wprowadzaj¹cy w arkana tworzenia bezpiecznych aplikacji WWW. Twórca aplikacji WWW nie mo¿e sobie pozwoliæ na to, by jego dzie³a by³y wra¿liwe na ataki hakerów. Zacznij wiêc myġleæ jak haker, a luki w bezpieczeñstwie natychmiast siê ujawni¹. Dziêki tej ksi¹¿ce nauczysz siê analizowaæ metody stosowane do w³amañ i ataków na witryny WWW. Bêdziesz móg³ nastêpnie wykorzystaæ tê wiedzê, by zapobiegaæ atakom. W ksi¹¿ce omówiono m.in.: • Najlepsze zabezpieczania aplikacji WWW • Zagadnienia bezpieczeñstwa w projektowaniu • Ostrze¿enia o niebezpieczeñstwie • Technologie XML, Java, ColdFusion oraz skrypty CGI. • Witryny poġwiêcone hakerom • Narzêdzia i pu³apki • Piêæ faz w³amania • Rodzaje ataków hakerskich • Niezbêdne etapy dzia³ania przy ocenie ryzyka • Automatyczne narzêdzia skanuj¹ce IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Spis treści Podziękowania ...................................................n...................................................n..... 9 Współpracownicy ...................................................n.................................................. 10 Przedmowa..........................................n...................................................n.................. 13 Rozdział 1. Metodologia włamań...................................................n........................... 15 Wprowadzenie ...................................................n...................................................n........ 15 Podstawowe terminy...................................................n............................................. 16 Krótka historia hackingu ...................................................n............................................. 17 Hacking sieci telefonicznych ...................................................n................................. 17 Hacking komputerowy...................................................n.......................................... 18 Co motywuje hakera?...................................................n................................................. 20 Hacking etyczny a hacking złośliwy...................................................n....................... 20 Współpraca ze specjalistami ds. bezpieczeństwa ...................................................n..... 21 Współczesne rodzaje ataków...................................................n....................................... 22 DoS (DDoS)...................................................n...................................................n..... 22 Hacking wirusowy...................................................n................................................ 24 Kradzież ...................................................n...................................................n........... 29 Zagrożenia bezpieczeństwa aplikacji WWW...................................................n................. 32 Ukryta manipulacja...................................................n............................................... 32 Zamiana parametrów ...................................................n............................................ 33 Zewnętrzne skrypty...................................................n.............................................. 33 Przepełnienie buforów ...................................................n.......................................... 33 Zatrute cookies...................................................n...................................................n.. 34 Zapobieganie włamaniom poprzez przyjęcie postawy hakera ............................................ 34 Podsumowanie...................................................n...................................................n........ 36 Skrót rozwiązań ...................................................n...................................................n...... 37 Pytania i odpowiedzi ...................................................n.................................................. 39 Rozdział 2. Jak nie zostać „maszynką do kodu”?.....................n................................. 41 Wprowadzenie ...................................................n...................................................n........ 41 Kim jest „maszynka do kodu”? ...................................................n................................... 42 Postępując zgodnie z zasadami ...................................................n.............................. 45 Twórcze kodowanie ...................................................n...................................................n 46 Zastanawiać się ...................................................n...................................................n. 48 Bezpieczeństwo z punktu widzenia „maszynki do kodu” .................................................. 50 Programowanie w próżni...................................................n....................................... 51 Tworzenie sprawnych i bezpiecznych aplikacji sieciowych ............................................... 52 Przecież mój kod działa! ...................................................n....................................... 56 Podsumowanie...................................................n...................................................n........ 61 Skrót rozwiązań ...................................................n...................................................n...... 62 Pytania i odpowiedzi ...................................................n.................................................. 63 4 Hack Proofing Your Web Applications. Edycja polska Rozdział 3. Ryzyko związane z kodem przenośnym...................................................n. 65 Wprowadzenie ...................................................n...................................................n........ 65 Działanie ataków wykorzystujących kod przenośny ...................................................n...... 66 Ataki z wykorzystaniem przeglądarek ...................................................n.................... 66 Ataki z wykorzystaniem programów pocztowych...................................................n.... 67 Złośliwe skrypty lub makra ...................................................n................................... 68 Identyfikacja popularnych form kodu przenośnego...................................................n........ 68 Języki makropoleceń: Visual Basic for Applications (VBA)........................................ 69 JavaScript...................................................n...................................................n......... 74 VBScript ...................................................n...................................................n.......... 77 Aplety w Javie ...................................................n...................................................n.. 79 Kontrolki ActiveX ...................................................n................................................ 82 Załączniki listów elektronicznych i pobrane pliki wykonywalne .................................. 86 Ochrona systemu przez atakami wykorzystującymi kod przenośny.................................... 89 Aplikacje bezpieczeństwa...................................................n...................................... 90 Narzędzia na stronach WWW...................................................n................................ 93 Podsumowanie...................................................n...................................................n........ 93 Skrót rozwiązań ...................................................n...................................................n...... 95 Pytania i odpowiedzi ...................................................n.................................................. 95 Rozdział 4. Wrażliwe skrypty CGI ...................................................n.......................... 97 Wprowadzenie ...................................................n...................................................n........ 97 Czym jest i co robi skrypt CGI? ...................................................n.................................. 98 Typowe zastosowania skryptów CGI ...................................................n..................... 99 Kiedy powinno się stosować CGI?...................................................n....................... 103 Zagadnienia związane z instalacją skryptów CGI ...................................................n.. 104 Włamania umożliwione przez słabe skrypty CGI ...................................................n........ 105 Jak pisać bardziej szczelne skrypty CGI?...................................................n.............. 106 Polecenia katalogów ...................................................n........................................... 108 Opakowania skryptów CGI ...................................................n................................. 109 Języki wykorzystywane do tworzenia skryptów CGI...................................................n... 112 Powłoka systemu Unix...................................................n........................................ 113 Perl ...................................................n...................................................n................ 113 C (C++)...................................................n...................................................n.......... 114 Visual Basic...................................................n...................................................n.... 114 Korzyści ze stosowania skryptów CGI ...................................................n....................... 115 Zasady tworzenia bezpiecznych skryptów CGI ...................................................n........... 115 Składowanie skryptów CGI...................................................n................................. 118 Podsumowanie...................................................n...................................................n...... 120 Skrót rozwiązań ...................................................n...................................................n.... 120 Pytania i odpowiedzi ...................................................n................................................ 123 Rozdział 5. Techniki i narzędzia włamań ...................................................n.............. 125 Wprowadzenie ...................................................n...................................................n...... 125 Cele hakera...................................................n...................................................n........... 126 Omijanie alarmów ...................................................n.............................................. 127 Zdobywanie dostępu...................................................n........................................... 128 Zniszczenia, zniszczenia, zniszczenia ...................................................n................... 130 Jak być lepszym od hakera...................................................n.................................. 131 Pięć etapów włamania ...................................................n.............................................. 132 Tworzenie planu ataku...................................................n........................................ 132 Tworzenie planu przebiegu włamania...................................................n................... 134 Wybranie punktu wejścia ...................................................n.................................... 135 Stały i szeroki dostęp...................................................n.......................................... 136 Atak...................................................n...................................................n............... 137 Spis treści 5 Socjotechnika ...................................................n...................................................n....... 138 Informacje poufne ...................................................n.............................................. 138 Celowo pozostawione tylne wejścia ...................................................n........................... 143 Wprowadzenie do kodu ukrytego hasła...................................................n................. 143 Wykorzystanie słabych stron właściwych kodowi lub środowisku programowania ............ 145 Narzędzia wykorzystywane przez hakera ...................................................n................... 145 Edytory szesnastkowe...................................................n......................................... 145 Programy uruchomieniowe...................................................n.................................. 147 Deasemblery...................................................n...................................................n... 148 Podsumowanie...................................................n...................................................n...... 150 Skrót rozwiązań ...................................................n...................................................n.... 150 Pytania i odpowiedzi ...................................................n................................................ 153 Rozdział 6. Kontrola kodu i odwrotna analiza..............................................n............ 155 Wprowadzenie ...................................................n...................................................n...... 155 Jak efektywnie śledzić działanie programu ...................................................n................. 156 Monitorowanie i kontrola w wybranych językach programowania ................................... 158 Java ...................................................n...................................................n............... 158 Java Server Pages...................................................n............................................... 159 Active Server Pages...................................................n............................................ 159 Server Side Includes ...................................................n........................................... 159 Python ...................................................n...................................................n........... 159 Tool Command Language ...................................................n................................... 160 Practical Extraction and Reporting Language ...................................................n........ 160 PHP: Hypertext Preprocessor ...................................................n.............................. 160 C (C++)...................................................n...................................................n.......... 160 ColdFusion ...................................................n...................................................n..... 161 Lokalizacja słabych punktów...................................................n..................................... 161 Pobieranie danych od użytkownika ...................................................n...................... 161 Lokalizacja potencjalnych błędów przepełnienia buforów ......................................... 162 Weryfikacja wyświetlanych informacji...................................................n................. 165 Kontrola operacji na systemie plików ...................................................n................... 168 Uruchamianie zewnętrznego kodu i programów ...................................................n.... 170 Zapytania do baz danych SQL...................................................n............................. 172 Sieci i strumienie komunikacyjne...................................................n......................... 174 Praktyka...................................................n...................................................n............... 175 Podsumowanie...................................................n...................................................n...... 176 Skrót rozwiązań ...................................................n...................................................n.... 176 Pytania i odpowiedzi ...................................................n................................................ 177 Rozdział 7. Bezpieczeństwo w języku Java ...................................................n.......... 179 Wprowadzenie ...................................................n...................................................n...... 179 Architektura bezpieczeństwa Javy...................................................n.............................. 180 Model bezpieczeństwa w języku Java...................................................n................... 181 Piaskownica...................................................n...................................................n.... 183 Podejście do problemów bezpieczeństwa w Javie...................................................n........ 187 Programy ładujące klasy ...................................................n..................................... 187 Weryfikator bajt-kodu...................................................n......................................... 190 Chronione domeny Javy...................................................n...................................... 194 Potencjalne luki bezpieczeństwa w Javie ...................................................n.................... 201 Ataki DoS (degradacji usług)...................................................n............................... 202 Konie trojańskie ...................................................n................................................. 204 Programowanie funkcjonalnych, ale bezpiecznych apletów w Javie ................................. 205 Skróty wiadomości ...................................................n............................................. 206 Podpisy cyfrowe ...................................................n................................................ 208 6 Hack Proofing Your Web Applications. Edycja polska Uwierzytelnianie ...................................................n................................................ 214 Ochrona zabezpieczeń za pomocą podpisywania plików JAR .................................... 220 Szyfrowanie...................................................n...................................................n.... 223 Zalecenia Sun Microsystems odnośnie bezpieczeństwa w Javie ................................. 227 Podsumowanie...................................................n...................................................n...... 230 Skrót rozwiązań ...................................................n...................................................n.... 231 Pytania i odpowiedzi ...................................................n................................................ 232 Rozdział 8. Bezpieczeństwo w języku XML ...................................................n.......... 235 Wprowadzenie ...................................................n...................................................n...... 235 Definicja języka XML...................................................n.............................................. 236 Struktura logiczna...................................................n............................................... 237 Elementy ...................................................n...................................................n........ 237 Dokumenty XML, XSL i DTD ...................................................n............................ 240 Zastosowanie szablonów w języku XSL...................................................n............... 240 Zastosowanie wzorów w języku XSL...................................................n................... 241 DTD ...................................................n...................................................n.............. 243 Wykorzystanie języka XML do tworzenia aplikacji WWW............................................. 245 Ryzyko związane z językiem XML...................................................n............................ 247 Problemy tajności...................................................n............................................... 248 Bezpieczeństwo w języku XML ...................................................n................................ 249 Specyfikacja XML Encryption...................................................n............................. 250 Specyfikacja XML Digital Signatures...................................................n................... 254 Podsumowanie...................................................n...................................................n...... 256 Skrót rozwiązań ...................................................n...................................................n.... 257 Pytania i odpowiedzi ...................................................n................................................ 258 Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX.......................... 259 Wprowadzenie ...................................................n...................................................n...... 259 Zagrożenia związane z technologią ActiveX ...................................................n............... 260 Unikanie typowych luk bezpieczeństwa w kontrolkach ActiveX ................................ 262 Usuwanie skutków luk w technologii ActiveX ...................................................n...... 264 Metodologia tworzenia bezpiecznych kontrolek ActiveX ................................................ 267 Parametry bezpieczeństwa obiektu ...................................................n....................... 267 Bezpieczne kontrolki ActiveX ...................................................n................................... 268 Podpisywanie kontrolek ...................................................n...................................... 268 Znakowanie kontrolek...................................................n......................................... 271 Podsumowanie...................................................n...................................................n...... 276 Skrót rozwiązań ...................................................n...................................................n.... 276 Pytania i odpowiedzi ...................................................n................................................ 278 Rozdział 10. Bezpieczeństwo w ColdFusion...................................................n........... 281 Wprowadzenie ...................................................n...................................................n...... 281 Jak działa ColdFusion? ...................................................n............................................. 282 Zalety szybkiego projektowania...................................................n........................... 283 Zarys znacznikowego języka ColdFusion...................................................n.............. 284 Zachowanie bezpieczeństwa w technologii ColdFusion .................................................. 286 Projektowanie z uwzględnieniem bezpieczeństwa...................................................n.. 288 Bezpieczne rozpowszechnianie ...................................................n............................ 297 Przetwarzanie w aplikacjach ColdFusion...................................................n.................... 297 Sprawdzanie istnienia danych...................................................n.............................. 298 Kontrola typów danych...................................................n....................................... 299 Szacowanie danych ...................................................n............................................ 301 Ryzyko związane z technologią ColdFusion ...................................................n............... 302 Zastosowanie programów obsługi błędów...................................................n............. 304 Spis treści 7 Stosowanie śledzenia sesji...................................................n......................................... 308 Podsumowanie...................................................n...................................................n...... 309 Skrót rozwiązań ...................................................n...................................................n.... 310 Pytania i odpowiedzi ...................................................n................................................ 311 Rozdział 11. Projektowanie aplikacji spełniających wymogi bezpieczeństwa.............. 313 Wprowadzenie ...................................................n...................................................n...... 313 Zalety stosowania aplikacji spełniających wymogi bezpieczeństwa.................................. 314 Rodzaje zabezpieczeń stosowanych w aplikacjach...................................................n....... 315 Podpisy elektroniczne ...................................................n......................................... 316 Pretty Good Privacy ...................................................n........................................... 317 Protokół S/MIME...................................................n............................................... 319 Secure Sockets Layer ...................................................n......................................... 319 Certyfikaty cyfrowe...................................................n............................................ 323 Podstawowe informacje na temat PKI...................................................n........................ 325 Usługi certyfikujące...................................................n............................................ 327 Zastosowanie PKI do zabezpieczania aplikacji WWW...................................................n. 328 Implementacja PKI w infrastrukturze WWW...................................................n.............. 329 Microsoft Certificate Services...................................................n.............................. 330 Netscape Certificate Server ...................................................n................................. 333 PKI dla Serwera Apache ...................................................n..................................... 339 PKI i Secure Software Toolkits...................................................n............................ 341 Testowanie zabezpieczeń ...................................................n.......................................... 341 Podsumowanie...................................................n...................................................n...... 343 Skrót rozwiązań ...................................................n...................................................n.... 345 Pytania i odpowiedzi ...................................................n................................................ 347 Rozdział 12. Od początku do końca — praca z planem bezpieczeństwa..................... 349 Wprowadzenie ...................................................n...................................................n...... 349 Analiza kodu ...................................................n...................................................n........ 350 Sprawdzanie kodu ...................................................n.............................................. 351 Perspektywa współpracownika ...................................................n............................ 352 Świadomość słabych punktów kodu...................................................n........................... 354 Testy, testy, testy ...................................................n............................................... 355 Rozsądek podczas kodowania ...................................................n................................... 357 Planowanie ...................................................n...................................................n..... 357 Standardy kodowania...................................................n.......................................... 358 Narzędzia ...................................................n...................................................n....... 359 Tworzenie planu bezpieczeństwa ...................................................n............................... 362 Planowanie bezpieczeństwa na poziomie sieci...................................................n....... 364 Planowanie bezpieczeństwa na poziomie aplikacji...................................................n. 364 Planowanie bezpieczeństwa na poziomie biura...................................................n...... 365 Proces bezpieczeństwa aplikacji WWW ...................................................n............... 365 Podsumowanie...................................................n...................................................n...... 367 Skrót rozwiązań ...................................................n...................................................n.... 368 Pytania i odpowiedzi ...................................................n................................................ 369 Dodatek A Skrót zagadnień omawianych w książce ............................................... 371 Skorowidz ...................................................n...................................................n........ 389 Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX Rozwiązania omawiane w niniejszym rozdziale:  Zagrożenia związane z technologią ActiveX.  Metodologia tworzenia bezpiecznych kontrolek ActiveX.  Bezpieczne kontrolki ActiveX.  Podsumowanie.  Skrót rozwiązań.  Pytania i odpowiedzi. Wprowadzenie Kontrolki ActiveX są opracowaną przez Microsoft implementacją standardu Component Object Model (COM). Firma stworzyła technologię ActiveX w miejsce przestarzałego modelu Object Linking and Embedding (OLE), stosowanego we wcześniejszych wersjach systemu Windows. Do ulepszeń ActiveX względem modelu OLE należy rozszerzalność modelu i możliwość przetwarzania rozproszonego (DCOM), jak również lepsza wydaj- ność w lokalnych aplikacjach. Kontrolki ActiveX z reguły są tworzone w Visual Basicu lub C++. Kontrolki ActiveX są w systemie Windows łatwo zauważane i dodają aplikacjom, zwłasz- cza WWW, wiele możliwości interakcji. Dobrze komponują się w dokumenty HTML, dzięki czemu bez trudu można je przenosić pomiędzy systemami. Kontrolki ActiveX w aplikacjach mogą służyć do wykonywania powtarzających się czynności lub do wy- woływania innych kontrolek, odpowiedzialnych za konkretne operacje. Po instalacji kontrolki ActiveX, jest ona uruchamiana automatycznie i nie musi być ponownie insta- lowana. Tak naprawdę kontrolka ActiveX może zostać pobrana z odległego serwera za pośrednictwem adresu URL, po czym uruchamiana bez konieczności powtórnego pobie- rania. Pozwala to na uruchamianie kontrolek ActiveX z poziomu stron WWW. 260 Hack Proofing Your Web Applications. Edycja polska Problemy bezpieczeństwa dotyczące kontrolek ActiveX są ściśle związane z właściwo- ściami technologii ActiveX. Kontrolki nie są uruchamiane w ograniczonej przestrzeni lub piaskownicy, jak ma to miejsce w przypadku apletów Javy, tak więc stanowią potencjal- nie większe zagrożenie dla aplikacji. Ponadto kontrolki ActiveX są zdolne do wszelkich operacji, które może wykonać użytkownik, to znaczy, że są w stanie dodawać i usuwać dane lub zmieniać właściwości obiektów. Wydaje się, iż JavaScript oraz aplety w Javie zdominowały środowisko projektantów internetowych, ale wiele witryn i aplikacji wciąż korzysta z kontrolek ActiveX. Wciąż pojawiające się wiadomości o włamaniach na witryny internetowe świadczą o tym, że wielu programistów jeszcze nie opanowało sztuki zabezpieczania swoich kontrolek, a przecież ActiveX jest dość dobrze znaną technologią. Niniejszy rozdział ma za zadanie pomóc w identyfikacji i rozwiązywaniu niektórych problemów bezpieczeństwa wynikają- cych ze źle napisanych kontrolek ActiveX (spośród których wiele jest za darmo dostęp- nych w internecie). Obalone zostaną popularne, błędne twierdzenia dotyczące ActiveX, natomiast wprowadzone będą skuteczne zasady tworzenia bezpiecznych i funkcjonalnych kontrolek ActiveX. Zagrożenia związane z technologią ActiveX Podstawowe zagrożenia związane z kontrolkami ActiveX wynikają ze sposobu traktowa- nia problemów bezpieczeństwa przez firmę Microsoft. Wdrażając technologię Authen- ticode, służącą do opatrywania kontrolki cyfrowym podpisem, Microsoft uznaje, że jest w stanie zagwarantować użytkownikowi źródło pochodzenia kontrolki oraz fakt, że kontrolka nie została zmodyfikowana od momentu powstania. W większości przypadków jest to prawdą, jednak kilka rzeczy, których Microsoft nie robi, stanowi poważne zagro- żenie dla stacji roboczych i całych sieci. Pierwszym i najbardziej oczywistym niebezpie- czeństwem jest fakt, że Microsoft nie ogranicza uprawnień kontrolki po zainstalowaniu jej w lokalnym komputerze. To jedna z kluczowych różnic pomiędzy ActiveX a Javą. Java korzysta z metody zwanej piaskownicą (sandbox). Umieszczenie apletu Javy w piaskow- nicy gwarantuje, że aplikacja funkcjonuje we własnym, chronionym obszarze pamięci, który jest odizolowany od innych rzeczy (systemu plików czy innych aplikacji). Nakła- da to poważne ograniczenia na możliwości kontrolki. Z kolei kontrolki ActiveX mają takie same prawa jak użytkownik, który je uruchamia po instalacji. Microsoft nie jest w stanie zagwarantować, że z kontrolki korzysta jej autor ani też że jest wykorzystywana zgodnie z przeznaczeniem — na witrynie lub stronach, na potrzeby których powstała. Microsoft nie gwarantuje również, że właściciel witryny lub ktokolwiek inny nie zmie- nił zawartości strony po tym, jak zainstalowano kontrolkę. To wykorzystanie tych sła- bych punktów stanowi największe niebezpieczeństwo związane z kontrolkami ActiveX. Na przykład Scriptlet.Typelib jest kontrolką ActiveX firmy Microsoft, którą projektanci stosują do generacji bibliotek czcionek dla komponentów typu Windows Script Compo- nent (WSC). Jedna z funkcji tej kontrolki pozwala na tworzenie i modyfikację plików w komputerze lokalnym. Oczywiście sprawia to, że kontrolka ta powinna być chroniona przed niepowołanymi programami. Zgodnie z centrum koordynacyjnym CERT (CERT/CC) Rozdział 9.  Tworzenie bezpiecznych sieciowych kontrolek ActiveX 261 kontrolka ta została błędnie oznakowana jako bezpieczna ze względu na skrypty i dołączona do pakietów Internet Explorer 4.0 i 5.0. W efekcie haker mógłby napisać fragment zło- śliwego kodu odwołującego się i uruchamiającego tę kontrolkę bez wiedzy użytkownika. Dwa dobrze znane wirusy wykorzystują tę lukę. Są to: kak oraz BubbleBoy. Obydwa są roznoszone przez listy elektroniczne HTML, a modyfikują Rejestr systemu i inne pliki systemowe. Microsoft w 1999 r. wprowadził poprawkę uodparniającą na te wirusy. Ponieważ Scriptlet.Typelib oznaczony jest jako bezpieczny ze względu na skrypty, do- myślne ustawienia programów Internet Explorer, Outlook oraz Outlook Express pozwa- lają na użycie kontrolki bez zgłaszania alarmów bezpieczeństwa. Lukę tę wykorzystuje wirus kak, który w katalogu startowym Windows usiłuje umieścić plik aplikacji HTML (HTA). Umieszczony tam kak oczekuje na kolejne uruchomienie systemu bądź rejestro- wanie użytkownika. Gdy to nastąpi, wirus budzi się i może wyrządzać szkody — wyko- nuje serię zapisów i modyfikacji różnych plików. W wyniku tego w komputerze pojawia się nowy plik z podpisem, który zawiera wirus i jest dołączany do każdej wychodzącej wiadomości (rysunek 9.1). Dzięki temu kak może się rozprzestrzeniać. Rysunek 9.1. Okno opcji programu Microsoft Outlook Express Główne uderzenie następuje na skutek sprawdzenia dnia miesiąca i bieżącej godziny. Jeśli jest to godzina 600 po południu lub później, pierwszego dnia miesiąca, kak wyświetla okno z komunikatem Not Today (Nie dzisiaj, rysunek 9.2). Gdy okno to zostaje zamknięte, kak wywołuje funkcję Win32 API powodującą zamknięcie systemu Windows. Ponieważ kod ten znajduje się w pliku HTA, który jest uruchamiany przy każdym rozruchu i reje- strowaniu, ponowne włączenie zarażonego komputera po godzinie 180 0 pierwszego dnia miesiąca kończy się wyświetleniem komunikatu Not Today, a następnie zamknięciem systemu. Biorąc jeszcze pod uwagę zdolność do tworzenia i modyfikacji plików oraz wpisów rejestru, a także możliwość wywoływania funkcji API, widać, jak ta kontrolka może być niebezpieczna. 262 Hack Proofing Your Web Applications. Edycja polska Rysunek 9.2. Okno dialogowe aplikacji HTML Unikanie typowych luk bezpieczeństwa w kontrolkach ActiveX Jedna z najpowszechniejszych luk bezpieczeństwa spowodowanych przez technologię ActiveX ma związek z postrzeganiem (lub jego brakiem) przez programistę możliwości kontrolki. Każdy programista zatrudniony w przedsiębiorstwie czy firmie konsultingowej, który pisze kontrolkę na potrzeby legalnej działalności, chce, by kontrolka była jak naj- łatwiejsza w użyciu. Bierze pod uwagę docelowe zastosowanie kontrolki i jeśli wydaje się bez zarzutu, to oznacza ją jako „bezpieczną ze względu na skrypty”. Z drugiej strony bez oznaczenia kontrolki jako bezpiecznej, użytkownik jest zasypywany ostrzeżeniami o potencjalnym zagrożeniu związanym z użyciem kontrolki, która nie jest podpisana i nie jest oznaczona jako bezpieczna. W zależności od ustawień opcji bezpieczeństwa w prze- glądarce użytkownik może w ogóle nie móc uruchomić kontrolki (rysunek 9.3). Po ozna- czeniu jako bezpiecznej, inne aplikacje i kontrolki mają możliwość uruchomienia jej bez pytania o zgodę użytkownika. Oczywiście taka sytuacja może być niebezpieczna. Dobrym przykładem potencjalnych efektów działania technologii ActiveX jest niesławna kontrolka Windows Exploder. Była to mała, zgrabna kontrolka, stworzona przez Freda McLaina (www.halcyon.com/mclain/ActiveX), która miała demonstrować możliwości „niebezpiecz- nej” technologii. Jedyne, co robiła ta kontrolka, to zamknięcie i wyłączenie zarażonego systemu. Teraz nie wydaje się to zbyt groźne, a nie był to efekt pomyłki, ale wywołuje chwilę zastanowienia. Kontrolki ActiveX wymagają ostrożności. Przed wprowadzeniem jej na rynek programista musi wiedzieć, do czego zdolna jest kontrolka. Rysunek 9.3. Alarm Microsoft Internet Explorera Kolejnym problemem wynikającym z nieostrożności programisty jest wykorzystanie kontrolki niezgodnie z przeznaczeniem, przy wykorzystaniu przywilejów użytkownika. Fakt, że twórca tworzy kontrolkę z myślą o konkretnym przeznaczeniu, nie oznacza, że kto inny nie jest w stanie znaleźć innego zastosowania. Zawsze znajdzie się ktoś, kto zechce spożytkować twórczość programisty. Wystarczy przypomnieć sobie przykład kontrolki Scriptlet.Typelib z poprzedniego podrozdziału. Programiści Microsoftu wie- dzieli, że kontrolka prawidłowo tworzy biblioteki czcionek dla WSC, ale nie wzięli pod uwagę, że ktoś mógłby skorzystać z ich kontrolki do utworzenia aplikacji HTML i mo- dyfikacji wpisów rejestru. Innym problemem związanym z kontrolkami ActiveX jest publikacja wersji, które nie zostały dokładnie przetestowane i zawierają błędy. Wśród błędów często spotykanych w programach w C++ jest błąd przepełnienia buforów. Ma on miejsce podczas kopio- wania ciągu znaków do tablicy o stałej długości, gdy ciąg jest dłuższy niż tablica. Wy- nikiem jest przepełnienie buforów i potencjalnie upadek aplikacji. W przypadku tego Rozdział 9.  Tworzenie bezpiecznych sieciowych kontrolek ActiveX 263 rodzaju błędów najistotniejsze jest to, że efekty są nieprzewidywalne. Przy odrobinie szczęścia, pojawi się jedynie szczegółowy komunikat o błędzie (rysunek 9.4). Przepeł- nienie bufora może spowodować wyświetlenie na ekranie niepożądanych znaków albo spowodować błąd przeglądarki i zawiesić system. Problem ten przez lata był plagą śro- dowiska systemów UNIX (Linux), ale ostatnio coraz bardziej zauważa się go na plat- formie Windows. W serwisie Microsoft TechNet (www.microsoft.com/technet/security) wśród najpopularniejszych zagadnień związanych z bezpieczeństwem w technologiach IT miesięcznie można znaleźć co najmniej jedną wzmiankę na temat tego błędu. Nie jest to wyłącznie problem Microsoftu — dotyczy niemal każdego producenta tworzącego kod dla platformy Windows. Dla ilustracji zasięgu tego problemu warto zajrzeć do nie- dawnego raportu na witrynie secureroot (www.secureroot.com), w którym Neal Krawetz donosi, iż udało mu się zlokalizować błąd przepełnienia buforów w module Shockwave Flash. Raport informuje: „Na witrynie firmy Macromedia można się dowiedzieć, że moduł zainstalowany jest już w 90 wszystkich przeglądarek internetowych. Ponieważ prze- pełnienie buforów pozwala na uruchomienie dowolnego kodu, to może dotyczyć 90 podłączonych do sieci systemów”. To przerażająca wizja! Mimo że ten błąd jest bardzo rozpowszechniony, rozwiązanie jest proste — należy więcej czasu poświęcić na dokładne testowanie i sprawdzenie, czy kod zapewnia kontrolę brzegów dla wszystkich wartości dopuszczających dane o zmiennej długości. Rysunek 9.4. Okno dialogowe szczegółowego komunikatu o błędzie w Windows Kolejne niebezpieczeństwo wiąże się ze stosowaniem starych, wycofanych już wersji kontrolek ActiveX. Niektóre z nich zawierają błędy, inne nie. Niektóre mogły zostać zupełnie przebudowane lub z jakiegoś powodu zastąpione. W momencie gdy ktoś posiada kopię kontrolki, nie ma gwarancji, że użyje obecnej wersji, zwłaszcza jeżeli może być ona w jakiś sposób nadużyta. W przypadku instalacji kontrolki, której podpis jest prze- starzały, wyświetlany jest komunikat o błędzie, jednak wiele osób i tak ją zainstaluje, ponieważ wciąż widnieje na niej podpis jej twórcy (rysunek 9.5). Niestety, nie ma spo- sobu, by zapobiec wykorzystaniu przez kogoś kontrolki, mimo że twórca ją wycofał. Gdy programista opatruje podpisem i publikuje w internecie kontrolkę, która może być potencjalnie niebezpieczna, kontrolka ta staje się łakomym kąskiem dla każdego hakera. 264 Hack Proofing Your Web Applications. Edycja polska Rysunek 9.5. Ostrzeżenie o przestarzałym podpisie kontrolki W tym przypadku najlepszą obroną jest skuteczny atak. Dokładne testowanie kontrolki przed opublikowaniem oszczędzi później kłopotów. Użytkownik również powinien „atakować”. Nigdy nie należy instalować kontrolki, która jest niepodpisana lub okres ważności podpisu dobiegł końca. Skutki mogą być potencjalnie groźne. Po instalacji kontrolki ActiveX mają takie same prawa jak użytkownik i mogą wykonywać takie same operacje. Mogą wszystko, od wysłania poufnych danych w za- łączniku listu elektronicznego do wywołania polecenia powłoki, takiego jak np. Delete. Przed podjęciem decyzji o instalacji niepodpisanej lub przestarzałej kontrolki należy zdać sobie sprawę z ryzyka. Usuwanie skutków luk w technologii ActiveX Słabość technologii ActiveX jest poważnym problemem dla administratorów sieci, użyt- kowników i programistów. Dla niektórych skutki niepoprawnego stosowania i zarządza- nia kontrolkami ActiveX mogą być ogromne. Inni nigdy nie martwili się tym problemem. Istnieje możliwość ustanowienia polityki, która zabroni stosowania wszelkich kontrolek i skryptów, ale trzeba tego dokonać na poziomie każdej maszyny z osobna, a to zabiera dużo czasu, zarówno jeśli chodzi o implementację, jak i zarządzanie. Występuje to zwłasz- cza w środowiskach, w których użytkownicy sami chętnie zmieniają parametry przegląda- rek. Do innych opcji można zaliczyć ograniczenie dostępu kontrolek ActiveX, na przykład za pośrednictwem barier firewall i oprogramowania antywirusowego, jednak efektywność takich rozwiązań ogranicza się do przypadków oczywistych i znanych. Mimo że pełna ochrona przed zagrożeniami spowodowanymi przez słabości technologii ActiveX jest trudna — jeśli nie niemożliwa — to użytkownicy na każdym poziomie mogą podjąć kroki prowadzące do minimalizacji niebezpieczeństw. Ochrona na poziomie sieciowym Administrator sieci powinien rozpocząć dostrajanie różnych parametrów bezpieczeństwa od sieciowego systemu operacyjnego:  Do nałożenia ograniczeń na kontrolki mogą służyć takie mechanizmy, jak strefy bezpieczeństwa czy protokół Secure Sockets Layer (SSL). Rozdział 9.  Tworzenie bezpiecznych sieciowych kontrolek ActiveX 265  W rejestrze systemowym dostępny jest wpis QFG$CUG5GCTEJ2CVJ określający miejsce, z którego system będzie próbował pobierać kontrolki ActiveX.  Istnieje narzędzie o nazwie Internet Explorer Administration Kit (IEAK), które może służyć do definiowania i dynamicznego zarządzania kontrolkami ActiveX. Mimo że część tych opcji są bardzo przydatna, należy również rozważyć instalację bariery firewall. Niektóre zapory mają możliwość monitorowania i wybiórczego filtrowania wy- wołań oraz transferów kontrolek ActiveX. Inne nie oferują takich opcji, dlatego powinno się zbadać możliwości wybieranej bariery firewall. Ochrona na poziomie klienta Jedną z najistotniejszych rzeczy, które może wykonać użytkownik, jest ciągła aktuali- zacja systemu operacyjnego wraz z jego komponentami i oprogramowaniem antywiru- sowym. Należy regularnie pobierać bieżące poprawki i bazy danych wirusów. Kolejną opcją dla użytkowników, a także administratorów, są parametry stref bezpieczeństwa w programach Internet Explorer, Outlook oraz Outlook Express. Są to cenne narzędzia bezpieczeństwa i warto skorzystać z ich potencjału. Ustawianie stref bezpieczeństwa Prawidłowo ustawione strefy bezpieczeństwa mogą obniżyć poziom ryzyka związany z kontrolkami ActiveX. Istnieje pięć stref bezpieczeństwa: Lokalny intranet, Zaufane witryny, Witryny z ograniczeniami, Internet oraz Mój komputer. Ostatnia strefa, Mój kom- puter, jest dostępna jedynie za pośrednictwem IEAK, nie z poziomu przeglądarki. W przy- padku braku dostępu do pakietu IEAK, można zmodyfikować parametry stref bezpie- czeństwa poprzez klucz rejestru o nazwie =*- ;A 744 06A75 4 5QHVYCTG /KETQUQHV 9KPFQYU WTTGPV8GTUKQP +PVGTPGV 5GVVKPIU QPGU?. Odpowiednie wartości tego klucza znajdują się w tabeli 9.1. Tabela 9.1. Parametry stref bezpieczeństwa dla programów Internet Explorer, Outlook oraz Outlook Express Wartość klucza rejestru Strefa bezpieczeństwa 0 1 2 3 4 Mój komputer Lokalny intranet Zaufane witryny Internet Witryny z ograniczeniami Modyfikacja ustawień stref bezpieczeństwa w programie Internet Explorer 5.x może się odbyć według następującego schematu: 1. Z menu Narzędzia wybiera się Opcje internetowe. Pojawia się okno dialogowe Opcji internetowych. 2. Należy wybrać zakładkę Zabezpieczenia. Pojawia się panel opcji zabezpieczeń. 266 Hack Proofing Your Web Applications. Edycja polska 3. Trzeba wybrać strefę do modyfikacji. Dla większości użytkowników będzie to strefa Internet, ale w zależności od okoliczności być może konieczne będzie powtórzenie tych kroków dla strefy Lokalny intranet. 4. Należy kliknąć przycisk Poziom niestandardowy. Pojawi się panel Ustawienia zabezpieczeń. 5. Zmiana jednego lub więcej spośród znajdujących się poniżej ustawień pozwoli osiągnąć wymagany poziom bezpieczeństwa:  w opcjach Formanty ActiveX i dodatki plug-in należy wybrać włącz, wyłącz lub monituj.  w opcjach Wykonywanie skryptów formantów ActiveX oznaczonych jako bezpieczne należy wybrać wyłącz lub monituj. 6. Kliknięcie OK zatwierdzi te zmiany. Pojawi się okno dialogowe potwierdzające dokonanie zmian. 7. Należy kliknąć Tak. 8. Przycisk OK zamknie okno Opcji internetowych i zapisze ustawienia. Użytkownik powinien również wyrobić w sobie nawyk ostrożności w momencie, gdy otrzymuje monit dotyczący pobrania lub uruchomienia kontrolki ActiveX. Trzeba rów- nież wyłączyć kontrolki ActiveX oraz inne języki skryptowe w aplikacjach pocztowych, co często bywa pomijane. Wiele osób uważa, że skoro nie używają aplikacji pocztowych Microsoftu, to są bezpieczni. Ale jeśli aplikacja pocztowa potrafi wyświetlać strony HTML, to zagrożenie ze strony Eudory jest równie prawdopodobne, jak ze strony programu Outlook Express. W przeglądarkach Netscape na dzień dzisiejszy niebezpieczeństwo związane z ActiveX jest niewielkie. Aby uruchomić kontrolkę ActiveX w przeglądarce Netscape wcześniejszej niż wersja 6. trzeba zainstalować moduł rozszerzający. Najbardziej znanym modułem obsługującym ActiveX w przeglądarkach Netscape jest ScriptActive firmy NCompass (NCompass nie oferuje już jednak tego modułu ani nie obsługuje prze- glądarki Netscape). Nie istnieje standardowy moduł dla Netscape 6 z jądrem Gecko. Uru- chomionych jest jednak kilka projektów mających na celu stworzenie nowych modułów lub bezpośredniej obsługi technologii ActiveX przez Netscape. Na programiście spoczywa największa odpowiedzialność. Stanowi on pierwszą linię obrony przed słabościami modelu ActiveX. Trzeba znać narzędzia dostępne w danej chwili, które pozwolą podnieść poziom bezpieczeństwa i zawsze należy brać pod uwagę ryzyko zwią- zane z tworzeniem kodu przenośnego. Powinno się stosować do dobrych reguł programo- wania i zachować szczególną ostrożność, by uniknąć powszechnych problemów i pomy- łek otwierających drogę do nadużyć. Przede wszystkim ważna jest dobra ocena i rozsądek oraz testowanie, testowanie, testowanie… Po podpisaniu i opublikowaniu kontrolki staje się ona celem — każdy może jej użyć. Dlatego trzeba mieć pewność, że stworzona kon- trolka ActiveX jest tak bezpieczna jak to tylko możliwe. Hakerzy z reguły wykorzystują pomysłowe sposoby, by skłonić użytkownika do kliknięcia pozornie bezpiecznego odnośnika lub otwarcia listu opatrzonego tytułem, np. „W odpo- wiedzi na pański komentarz”. Rozdział 9.  Tworzenie bezpiecznych sieciowych kontrolek ActiveX 267 Metodologia tworzenia bezpiecznych kontrolek ActiveX Jak pisać bezpieczne kontrolki ActiveX? Cóż, jak zawsze, pierwszy krok wymaga trafnej oceny i zdrowego rozsądku. Należy się upewnić, że działanie kontrolki i jej możliwości są dokładnie poznane. Dobre reguły inżynierii programowania oraz techniki projektowe również mogą być pomocne:  Trzeba dokładnie udokumentować kontrolkę. To da administratorom i użytkownikom podstawę do prawidłowej oceny potencjalnego ryzyka związanego z kontrolką.  Kontrolka powinna zawierać jak najmniejszą funkcjonalność — konieczną do spełnienia swojego zadania. Każda dodatkowa funkcja aż prosi się o nadużycie.  Należy zwrócić szczególną uwagę na powszechne pomyłki, jak przepełnienie buforów czy błędy poprawności danych wejściowych.  Istotne są metody zabezpieczania kontrolek ActiveX za pomocą odpowiednich parametrów bezpieczeństwa obiektu. Parametry bezpieczeństwa obiektu Zagadnienia bezpieczeństwa obiektów można podzielić na dwie grupy: bezpieczeństwo ze względu na inicjalizację oraz bezpieczeństwo ze względu na skrypty. Według definicji Microsoftu bezpieczny ze względu na inicjalizację oznacza, że kontrolka może pobierać dowolne argumenty, zaś bezpieczny ze względu na skrypty — każde zastosowanie wła- ściwości, metod i zdarzeń kontrolki jest bezpieczne. Pamiętając o tym, należy dokładnie testować kontrolki i upewnić się, że nie wykonują one potencjalnie niebezpiecznych zadań. Przykładami czynności uważanych za niebezpieczne są tworzenie i usuwanie plików, udostępnianie haseł, podgląd prywatnych informacji o użytkowniku czy wysyłanie za- pytań SQL. Mimo że Lista zagadnień bezpieczeństwa Kontrolek ActiveX Microsoftu może wydawać się subiektywna, właściwa ocena i rozsądek powinny pomóc w zakwalifikowaniu operacji. Jeśli kontrolka wykonuje jakąkolwiek operację spośród wymienionych poniżej, nie powinna być oznaczona jako bezpieczna:  Dostęp do informacji o komputerze lokalnym lub użytkowniku.  Udostępnianie prywatnych informacji w komputerze lokalnym bądź w sieci.  Modyfikacja lub usuwanie informacji z komputera lokalnego bądź sieci.  Błędy kontrolki potencjalnie prowadzące do zakończenia działania przeglądarki.  Nadmierne zużycie czasu i zasobów, takich jak pamięć.  Wykonywanie potencjalnie destrukcyjnych wywołań systemowych (włącznie z uruchamianiem plików).  Podstępne wykorzystanie kontrolki i powodowanie nieprzewidzianych wyników. 268 Hack Proofing Your Web Applications. Edycja polska Dobre narzędzia Programista, który zamierza opatrzyć kontrolkę ActiveX podpisem, potrzebuje odpowiednich na- rzędzi — certyfikatu, ale by go zastosować potrzebny będzie pakiet ActiveX SDK (ActiveX Software Development Kit) Microsoftu. ActiveX SDK jest zestawem narzędzi koniecznych do podpisywania i testowania plików CAB. Głównymi komponentami tego pakietu są: makecert.exe, cert2spc.exe, signcode.exe oraz checktrust.exe. Narzędzia te wchodzą również w skład wprowadzanego dopiero pakietu Microsoft.NET Framework.  Narzędzie tworzenia certyfikatów (makecert.exe) generuje certyfikat X.509, który może służyć jedynie do testowania. Program ten tworzy także publiczny i prywatny klucz na potrzeby podpisów cyfrowych.  Narzędzie testowe certyfikatów producentów oprogramowania (Cert2spc.exe) tworzy certyfikat typu Software Publisher’s Certificate (SPC) z jednego lub większej liczby certyfikatów X.509. Należy pamiętać, że program ten służy jedynie do testów.  Narzędzie podpisywania plików (signcode.exe) służy do podpisywania przenośnego pliku wykonywanego (portable executable, PE) i nadawania mu żądanych uprawnień, co pozwala twórcom na szczegółową kontrolę ograniczeń nałożonych na ich komponenty. Podpisem można opatrzyć indywidualny komponent lub cały pakiet. Program signcode uruchomiony bez żadnych parametrów włączy kreatora podpisów cyfrowych, który poprowadzi przez cały proces.  Narzędzie weryfikacji certyfikatów (chktrust.exe) sprawdza ważność pliku opatrzonego podpisem Authenticode. Jeśli odpowiednie wartości się zgadzają, chktrust uznaje certyfikat za zweryfikowany. Opisane narzędzia przyspieszą podpisywanie i dystrybucję kontrolek ActiveX. Bezpieczne kontrolki ActiveX Komu zaufać, a raczej, kto zaufa mnie? Takie pytanie powinien sobie zadać każdy twórca, który publikuje kontrolki ActiveX. Niezależnie od tego, czy kontrolka znajdzie zasto- sowanie w internecie czy w korporacyjnej sieci lokalnej, powinna być łatwa w instalacji i informować użytkowników, że jest godna zaufania. Metoda pozwalająca zdobyć to zaufanie nazywa się podpisywaniem kontrolek. Podpisywanie kontrolek Do podpisania kontrolki konieczny jest cyfrowy certyfikat lub identyfikator (rysunek 9.6) z Organu certyfikującego. Dwoma przewodnimi organami certyfikującymi kontrolki ActiveX w USA są VeriSign (www.verisign.com) oraz Thawte (www.thawte.com). Oby- dwie firmy oferują różne wersje certyfikatów — w zależności od platformy, na której działa projekt. Na przykład istnieją różne certyfikaty dla technologii Microsoft Authen- ticode, Netscape Object, Microsoft Office 2000 oraz VBA, Marimba, Macromedia Shoc- kwave, Apple i innych. W chwili obecnej roczny koszt cyfrowego identyfikatora typu Code Signing Digital ID wynosi 400 USD. W przypadku Thawte koszt ich pakietu Develo- per Certificate wynosi 200 USD, zaś co roku obowiązuje opłata odnawiająca w wyso- kości 100 USD. W przeciwieństwie do VeriSign, Thawte proponuje teraz uniwersalny certyfikat, służący do podpisywania kodu na wszystkich platformach z wyjątkiem Javy. Rozdział 9.  Tworzenie bezpiecznych sieciowych kontrolek ActiveX 269 Rysunek 9.6. Ostrzeżenie zawierające identyfikator podpisu kodu Firma twierdzi, że pakiet Java 2 Plugin Developer Certificates wciąż nie współpracuje z pozostałymi platformami, w związku z czym dla Javy trzeba wykupić osobny certyfikat. Jeśli jednak w grę wchodzi podpisywanie apletów Javy dla Navigatora (JVM) 1.1.x, wy- starczy certyfikat uniwersalny. Jedną z opcji proponowanych przez VeriSign jest dostęp do serwera stempli czasowych. Ponieważ certyfikat jest ważny jedynie przez rok, to po każdym odnowieniu certyfikatu należy ponownie podpisać kod. Nie jest to jednak prawdą, jeśli podpis w kodzie zawiera stempel czasowy. Oferta darmowego serwera stempli czasowych VeriSign zmniejsza pracę związaną z dbaniem o stary kod. Jest tylko jeden wyjątek — w chwili obecnej Netscape nie obsługuje stempli czasowych, więc kod dla Netscape musi być podpisywany co roku. Obydwa organy certyfikujące proponują taki sam rodzaj produktu, z których każdy ma zalety, jak Cadillac i Chevrolet — obydwa są dobrymi produktami. Jeden jest tańszy, drugi zawiera więcej udogodnień, ale obydwa pozwolą osiągnąć cel. Europejscy twórcy mogą współpracować z europejskimi organami certyfikującymi. Najpopularniejszymi orga- nami certyfikującymi w Europie są GlobalSign (www.globalsign.net) oraz TrustWise (www.trustwise.com). Co zrobić z posiadanym już cyfrowym certyfikatem? Cóż, ponieważ niniejszy rozdział opisuje kontrolki ActiveX, uwaga zostanie skupiona na podpisywaniu kodu dla platformy Microsoftu oraz na Microsoft Authenticode. Mimo że Thawte i VeriSign funkcjonują jak dwie niezależne firmy i wciąż prowadzą dwie oddzielne linie produktów, Thawte zostało wykupione przez VeriSign, Inc. w grudniu 1999 r. Jak stosować Microsoft Authenticode Co to jest i do czego służy Microsoft Authenticode? Authenticode to metoda zdobycia zaufania klientów. Posiadając cyfrowy certyfikat, kod można opatrzyć podpisem. Bez niego użytkownik otrzymałby komunikat o błędzie informujący, że niemożliwe jest ustalenie 270 Hack Proofing Your Web Applications. Edycja polska twórcy oprogramowania (rysunek 9.7). Gdy kod posiada podpis, wyświetlane są: informa- cje o kontrolce, tożsamość i kontakt do twórcy, organ certyfikujący oraz opcjonalnie czas i data podpisania kontrolki. Gwarantuje to użytkownikowi, że kontrolka została udostęp- niona przez zaufanego producenta oraz że nie była modyfikowana od momentu publikacji. Rysunek 9.7. Ostrzeżenie Authenticode Jak stosować Microsoft Authenticode? Implementacja technologii Authenticode polega na podpisaniu kodu. Sam proces podpisywania jest bardzo prosty. Ukończona (i w miarę potrzeby umieszczona w pliku CAB) kontrolka jest gotowa do podpisu, do czego konieczne będzie narzędzie signcode Microsoftu. Należy wykonać następujące czynności: 1. Po uruchomieniu pliku signcode.exe, pojawia się Kreator podpisów cyfrowych (rysunek 9.8). Rysunek 9.8. Kreator podpisów cyfrowych 2. Należy wybrać podpisywany plik. Może to być dowolny plik wykonywany (.exe, .ocx lub .dll). Istnieje również możliwość podpisania plików CAB, plików katalogów (CAT) oraz plików CTL. Rozdział 9.  Tworzenie bezpiecznych sieciowych kontrolek ActiveX 271 3. Po wybraniu pliku można zdecydować pomiędzy opcją Typical (typowa) oraz Custom (niestandardowa). W przypadku korzystania z cyfrowego identyfikatora (otrzymanego od organu autoryzującego) wybiera się opcję Custom. 4. Następnie należy wybrać plik certyfikatu (.cer, .crt lub .cps). 5. W kolejnym kroku trzeba podać plik zawierający klucz prywatny (PVK). W tym momencie użytkownik jest proszony o wpisanie hasła. Jeśli hasło zaginęło, trzeba wystąpić o wydanie nowego certyfikatu. Ponieważ jest to dość popularny problem, ponowne wystawienie certyfikatu przez obydwa organy autoryzujące jest darmowe. 6. Należy wybrać algorytm mieszający, który zostanie użyty do stworzenia podpisu. Użytkownik będzie miał w miarę potrzeby możliwość dołączenia dodatkowych certyfikatów. 7. Kolejnym krokiem jest opis danych (bardzo istotne). Są to informacje opisujące kontrolkę, które będą wyświetlane w momencie, gdy użytkownik instaluje kontrolkę. 8. Następnie pora na stempel czasowy konieczny do utrzymania kontrolki w stanie aktywnym po wygaśnięciu certyfikatu. Posiadacze certyfikatu VeriSign mogą korzystać z firmowego serwera stempli czasowych, w przeciwnym razie stempel będzie musiał pochodzić z innego źródła. 9. Na koniec użytkownik może zobaczyć wszystkie ustawienia. Teraz wystarczy kliknąć przycisk Zakończ, ponownie wprowadzić hasło certyfikatu i to wszystko — kontrolka ActiveX została podpisana! Dla tych, którzy nie przepadają za kreatorami, signcode.exe może być również urucho- miony z wiersza poleceń. Wystarczy jedynie podać odpowiednie parametry, a efekty będą takie same. Żeby nie wyprzedzać, omówimy jeszcze jedno zagadnienie. Przed podpisa- niem kodu trzeba wiedzieć, jak oznakować kontrolkę. Znakowanie kontrolek Istnieją dwie metody pozwalające na oznakowanie kontrolki jako bezpiecznej: ustawie- nia bezpieczeństwa kreatora pakietów i wersji dystrybucyjnych (Package and Deployment Wizard) w środowisku programistycznym lub implementacja interfejsu IObjectSafety. Najpierw zostanie omówiona łatwiejsza metoda. Ustawienia bezpieczeństwa Do tworzenia pakietów w postaci plików CAB wystarczy kreator wersji dystrybucyjnych (Package and Deployment Wizard). Aby oznaczyć kontrolkę ActiveX jako „bezpieczną ze względu na skrypty” czy „bezpieczną ze względu na inicjalizację”, należy wybrać opcję Yes w rozwijanej liście obok nazwy kontrolki na ekranie Safety Settings kreatora (rysunek 9.9). Oznakowanie kontrolki jako bezpiecznej pozwoli użytkownikom upewnić się, że kontrolka nie wykona w systemie operacji niebezpiecznych. Po wybraniu odpo- wiednich parametrów bezpieczeństwa klika się przycisk Dalej, a kreator zadba o resztę. Plik CAB będzie gotowy do instalacji, zaś kontrolka zostanie oznakowana zgodnie z wy- branymi ustawieniami. 272 Hack Proofing Your Web Applications. Edycja polska Rysunek 9.9. Ekran ustawień bezpieczeństwa kreatora wersji dystrybucyjnych IObjectSafety Drugą metodą oznakowania kontrolki jako bezpiecznej jest implementacja w kontrolce metody IObjectSafety. Jest ona interfejsem komponentu dostępnym z poziomu Microsoft Internet Explorera 4.0 i późniejszych. Zapewnia metody służące do pobierania i ustawiania opcji bezpieczeństwa aplikacji dla systemu Windows. Jest to bardzo prosty interfejs, który posiada jedynie dwie metody:   )GV+PVGTHCEG5CHGV[1RVKQPU 5GV+PVGTHCEG5CHGV[1RVKQPU Nazwy nie pozostawiają wątpliwości co do działania tych metod. )GV+PVGTHCEG5CHGV[ 1RVKQPU pobiera opcje bezpieczeństwa obsługiwane przez obiekt, jak również bieżące ustawienia opcji bezpieczeństwa obiektu. 5GV+PVGTHCEG5CHGV[1RVKQPU pozwala ozna- kować obiekt jako bezpieczny ze względu na inicjalizac
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Hack Proofing Your Web Applications. Edycja polska
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: