Karta Przedmiotu
| Politechnika Białostocka | Wydział Informatyki | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Kierunek studiów | Cyberbezpieczeństwo |
Poziom i forma studiów |
pierwszego stopnia stacjonarne |
||||||||||||||||||||||||
| Grupa przedmiotów / specjalność |
Bezpieczeństwo aplikacji | Profil kształcenia | ogólnoakademicki | ||||||||||||||||||||||||
| Nazwa przedmiotu | Zaawansowane programowanie i bezpieczeństwo w C# | Kod przedmiotu | CYB1ZPR | ||||||||||||||||||||||||
| Rodzaj zajęć | obieralny | ||||||||||||||||||||||||||
| Formy zajęć i liczba godzin | W | Ć | L | P | Ps | T | S | Semestr | 5,6 | ||||||||||||||||||
| 26 | 26 | Punkty ECTS | 4 | ||||||||||||||||||||||||
| Program obowiązuje od | 2026/2027 | ||||||||||||||||||||||||||
| Przedmioty wprowadzające | Administracja systemami Windows I (CYB1WIN1), Architektura komputerów i systemy operacyjne (CYB1SOP), Kryptografia (CYB1KRY), Podstawy programowania (CYB1PPR), | ||||||||||||||||||||||||||
| Cele przedmiotu |
Zapoznanie studentów z architekturą .NET oraz mechanizmami bezpieczeństwa środowiska zarządzanego, które eliminują typowe podatności niskopoziomowe znane z języków natywnych. Wykształcenie umiejętności projektowania bezpiecznych aplikacji z wykorzystaniem zaawansowanych mechanizmów obiektowych, defensywnej obsługi błędów oraz rygorystycznej walidacji danych wejściowych. Nabycie praktycznej sprawności w implementacji standardów kryptograficznych oraz bezpiecznym przetwarzaniu i przechowywaniu danych wrażliwych z użyciem bibliotek systemowych. Przygotowanie do analizy bezpieczeństwa kodu zarządzanego, w tym do przeprowadzania inżynierii wstecznej oraz stosowania metod ochrony własności intelektualnej i ochrony przed dekompilacją. |
||||||||||||||||||||||||||
| Ramowe treści programowe | Program koncentruje się na wykorzystaniu platformy .NET do budowy bezpiecznego oprogramowania poprzez automatyzację zarządzania pamięcią i eliminację typowych podatności binarnych. Program obejmuje zaawansowane mechanizmy programowania obiektowego, hermetyzację danych za pomocą akcesorów oraz projektowanie typów niezmiennych w celu ochrony spójności aplikacji. Studenci poznają zasady defensywnej obsługi wyjątków, bezpiecznego logowania zdarzeń oraz deklaratywnego przetwarzania zbiorów danych z wykorzystaniem technologii LINQ. Istotnym elementem jest praktyczna implementacja standardów kryptograficznych, w tym hashowania haseł i szyfrowania symetrycznego AES przy użyciu bibliotek systemowych. Poruszane są zagadnienia programowania asynchronicznego oraz bezpiecznej wymiany danych w formatach JSON i XML. Kurs obejmuje również techniki inżynierii wstecznej kodu zarządzanego, metody obfuskacji oraz analizę odporności plików wykonywalnych na dekompilację. Całość zamyka integracja środowiska C# ze skryptami zewnętrznymi i narzędziami audytowymi stosowanymi w cyberbezpieczeństwie. | ||||||||||||||||||||||||||
| Inne informacje o przedmiocie | przedmiot ma związek z prowadzoną na Uczelni działalnością naukową | ||||||||||||||||||||||||||
| przedmiot kształtuje umiejętności praktyczne | |||||||||||||||||||||||||||
| Wyliczenie: | Nakład pracy studenta związany z: | Godzin ogółem |
W tym kontaktowych |
W tym praktycznych |
|||||||||||||||||||||||
| udziałem w wykładach | 26 | 26 | |||||||||||||||||||||||||
| udziałem w innych formach zajęć | 26 | 26 | 26 | ||||||||||||||||||||||||
| przygotowaniem do bieżących zajęć | 13 | 13 | |||||||||||||||||||||||||
| implementacją zadań | 20 | 20 | |||||||||||||||||||||||||
| przygotowaniem do zaliczenia wykładu | 15 | ||||||||||||||||||||||||||
| Razem godzin: | 100 | 52 | 59 | ||||||||||||||||||||||||
| Razem punktów ECTS: | 4 | 2.1 | 2.4 | ||||||||||||||||||||||||
| Zakładane kierunkowe efekty uczenia się | Wiedza | Umiejętności | Kompetencje społeczne |
||||||||||||||||||||||||
| CYB1_W03 | CYB1_U03 | CYB1_K01 | |||||||||||||||||||||||||
| CYB1_W06 | CYB1_U06 | CYB1_K02 | |||||||||||||||||||||||||
| CYB1_W07 | CYB1_U08 | CYB1_K04 | |||||||||||||||||||||||||
| CYB1_W10 | CYB1_U12 | ||||||||||||||||||||||||||
| CYB1_W14 | CYB1_U13 | ||||||||||||||||||||||||||
| CYB1_W17 | CYB1_U18 | ||||||||||||||||||||||||||
| Cele i treści ramowe sformułował(a) | dr inż. Anna Borowska, dr Joanna Karbowska-Chilińska, dr inż. Krzysztof Ostrowski | Data: | 29/03/2026 | ||||||||||||||||||||||||
| Realizacja w roku akademickim | 2028/2029 | ||||||||||||||||||||||||||
| Treści programowe | |||||||||||||||||||||||||||
| Wykład | |||||||||||||||||||||||||||
| 1. | Architektura platformy .NET i podstawy składni języka C#. Model wykonawczy Common Language Runtime (CLR), kompilacja JIT. System typów: różnice między typami wartościowymi a referencyjnymi w kontekście bezpieczeństwa pamięci | ||||||||||||||||||||||||||
| 2. | Zarządzanie zasobami i automatyzacja bezpieczeństwa pamięci. Mechanizm Garbage Collector (GC). Cykl życia obiektu. Eliminacja błędów klasy buffer overflow i use-after-free znanych z języka C. Obsługa zasobów niezarządzanych (interfejs IDisposable) | ||||||||||||||||||||||||||
| 3. | Programowanie obiektowe w architekturze bezpiecznych systemów. Klasy, obiekty i interfejsy. Zastosowanie modyfikatorów dostępu do hermetyzacji danych. Zasady projektowe ułatwiające audyt kodu i ograniczające podatności | ||||||||||||||||||||||||||
| 4. | Bezpieczne operacje na kolekcjach danych i technologia LINQ. Przetwarzanie zbiorów danych z wykorzystaniem bezpiecznych typów kolekcji. Unikanie błędów indeksowania. Deklaratywne operacje na danych (Language Integrated Query) a czytelność i bezpieczeństwo kodu | ||||||||||||||||||||||||||
| 5. | Defensywna obsługa błędów i mechanizm wyjątków. Architektura systemu wyjątków w .NET. Projektowanie odpornych aplikacji (fault-tolerance). Zasady bezpiecznego logowania zdarzeń i unikanie wycieku informacji wrażliwych w komunikatach o błędach | ||||||||||||||||||||||||||
| 6. | Współbieżność i asynchroniczność w aplikacjach sieciowych. Model async/await i Task Parallel Library (TPL). Pisanie responsywnych narzędzi sieciowych. Podstawowe zagadnienia bezpieczeństwa wątkowego (thread-safety) i unikanie zakleszczeń | ||||||||||||||||||||||||||
| 7. | Implementacja mechanizmów kryptograficznych w C#. Wykorzystanie przestrzeni nazw System.Security.Cryptography. Praktyczna implementacja algorytmów symetrycznych, asymetrycznych oraz funkcji skrótu. Bezpieczne generowanie liczb pseudolosowych | ||||||||||||||||||||||||||
| 8. | Bezpieczeństwo operacji wejścia-wyjścia i formatów danych. Dostęp do systemu plików i uprawnienia. Bezpieczna serializacja i deserializacja danych (JSON, XML). Zagrożenia związane z niebezpieczną deserializacją i metody ich mitygacji | ||||||||||||||||||||||||||
| 9. | Programowanie sieciowe i zabezpieczanie komunikacji. Tworzenie klientów usług sieciowych (HTTP/Sockets). Obsługa protokołu TLS/SSL. Walidacja certyfikatów i bezpieczne zarządzanie sesjami w komunikacji rozproszonej | ||||||||||||||||||||||||||
| 10. | Podstawy budowy bezpiecznych usług webowych (Web API). Architektura nowoczesnych usług RESTful w technologii ASP.NET Core. Wbudowane mechanizmy ochrony przed atakami XSS, CSRF oraz SQL Injection (Entity Framework) | ||||||||||||||||||||||||||
| 11. | Metaprogramowanie i inżynieria wsteczna kodu zarządzanego. Mechanizm refleksji (Reflection) i jego wpływ na bezpieczeństwo. Analiza binarna plików wykonywalnych (.exe/.dll). Techniki ochrony kodu: obfuskacja i podpisywanie zestawów (Strong Naming) | ||||||||||||||||||||||||||
| 12. | C# w automatyzacji zadań cyberbezpieczeństwa – podsumowanie. Integracja C# z narzędziami zewnętrznymi i skryptami Python. Tworzenie własnych narzędzi wspomagających audyty i monitorowanie systemów. Przegląd dobrych praktyk Secure Coding | ||||||||||||||||||||||||||
| 13. | Zaliczenie wykładu | ||||||||||||||||||||||||||
| Pracownia specjalistyczna | |||||||||||||||||||||||||||
| 1. | Konfiguracja środowiska. Zadanie1 (Projekt i implementacja bezpiecznego analizatora logów systemowych). Tworzenie projektu konsolowego oraz definiowanie klas reprezentujących wpisy zdarzeń z wykorzystaniem typów wartościowych i referencyjnych | ||||||||||||||||||||||||||
| 2. | Implementacja bezpiecznego odczytu plików tekstowych. Wykorzystanie mechanizmu using oraz interfejsu IDisposable do poprawnego zarządzania zasobami i uchwytami plików | ||||||||||||||||||||||||||
| 3. | Zastosowanie hermetyzacji w ochronie logiki aplikacji. Ograniczanie widoczności składowych klas za pomocą modyfikatorów dostępu w celu zabezpieczenia danych przed nieautoryzowaną modyfikacją | ||||||||||||||||||||||||||
| 4. | Walidacja danych wejściowych z użyciem akcesorów właściwości. Automatyczna weryfikacja poprawności adresów IP i formatów dat wewnątrz obiektów oraz projektowanie typów niezmiennych | ||||||||||||||||||||||||||
| 5. | Analiza incydentów bezpieczeństwa z wykorzystaniem technologii LINQ. Budowa deklaratywnych zapytań filtrujących duże zbiory danych pod kątem występowania anomalii i zagrożeń | ||||||||||||||||||||||||||
| 6. | Implementacja mechanizmów odporności na błędy i wyjątki. Zabezpieczanie aplikacji przed awariami i wyciekiem informacji wrażliwych poprzez strukturalną obsługę błędów | ||||||||||||||||||||||||||
| 7. | Zadanie2 (Budowa kryptograficznego magazynu danych z modułem monitorowania). Wykorzystanie delegatów i zdarzeń do monitorowania aktywności użytkownika i generowania alertów bezpieczeństwa w czasie rzeczywistym | ||||||||||||||||||||||||||
| 8. | Programowanie asynchronicznych operacji na plikach sejfu. Zastosowanie modelu async/await do zapewnienia responsywności narzędzia podczas wykonywania obciążających zadań dyskowych | ||||||||||||||||||||||||||
| 9. | Zabezpieczanie poświadczeń użytkowników mechanizmem hashowania. Praktyczne użycie funkcji skrótu i bezpiecznych liczb losowych do ochrony haseł przechowywanych w systemie | ||||||||||||||||||||||||||
| 10. | Szyfrowanie zawartości magazynu z wykorzystaniem algorytmu AES. Implementacja poufności danych w spoczynku poprzez wykorzystanie systemowych bibliotek kryptograficznych | ||||||||||||||||||||||||||
| 11. | Serializacja stanu aplikacji do formatu JSON. Bezpieczny zapis i odczyt bazy danych magazynu z uwzględnieniem ochrony przed niebezpieczną deserializacją | ||||||||||||||||||||||||||
| 12. | Analiza odporności kodu na inżynierię wsteczną. Badanie własnego pliku wykonywalnego w dekompilatorze i stosowanie technik obfuskacji w celu ochrony własności intelektualnej | ||||||||||||||||||||||||||
| 13. | Automatyzacja i integracja z narzędziami zewnętrznymi. Łączenie modułów C# ze skryptami Python oraz weryfikacja zgodności projektu z zasadami Secure Coding | ||||||||||||||||||||||||||
| Metody dydaktyczne (realizacja stacjonarna) |
|||||||||||||||||||||||||||
| W | wykład informacyjny (prezentacja multimedialna), wykład problemowy | ||||||||||||||||||||||||||
| Ps | samodzielne / zespołowe projektowanie i implementacja bezpiecznego modułu oprogramowania | ||||||||||||||||||||||||||
| Metody dydaktyczne (realizacja zdalna) |
|||||||||||||||||||||||||||
| W | wykład realizowany w czasie rzeczywistym z wykorzystaniem platformy MS Teams | ||||||||||||||||||||||||||
| - | |||||||||||||||||||||||||||
| Forma zaliczenia | |||||||||||||||||||||||||||
| W | zaliczenie pisemne w formie testu otwartego | ||||||||||||||||||||||||||
| Ps | wejściówki, implementacja, prezentacja, obrona zadań programistycznych | ||||||||||||||||||||||||||
| Warunki zaliczenia | |||||||||||||||||||||||||||
| W | Uzyskanie min. 30% punktów z każdego efektu uczenia się z zakresu wiedzy, a po spełnieniu tego warunku ostateczna ocena wynika z sumy uzyskanych punktów z testu otwartego Kryteria oceny: [ 0 – 50]% punktów – 2.0 (50 – 60]% punktów – 3.0 (60 – 70]% punktów – 3.5 (70 – 80]% punktów – 4.0 (80 – 90]% punktów – 4.5 (90 – 100]% punktów – 5.0 |
||||||||||||||||||||||||||
| Ps | Minimalne wymagania odnośnie efektów uczenia się: E4 - implementacja i obrona zadania 1 na co najmniej 50% punktów. E5 - implementacja i obrona zadania 2 na co najmniej 50% punktów. E6 - implementacja i obrona zadania 2 na co najmniej 50% punktów. E7 - prezentacja i obrona zadania 2 na co najmniej 50% punktów E8 - prezentacja i obrona zadania 2 na co najmniej 50% punktów Ocena końcowa składa się z następujących elementów: - wejściówki: 2 po 10 pkt, - zadania programistyczne + obrona + prezentacja (Z1 35pkt, Z2 45pkt), Kryteria oceny: [ 0 – 50]% punktów – 2.0 (50 – 60]% punktów – 3.0 (60 – 70]% punktów – 3.5 (70 – 80]% punktów – 4.0 (80 – 90]% punktów – 4.5 (90 – 100]% punktów – 5.0 |
||||||||||||||||||||||||||
| Symbol efektu | Zakładane efekty uczenia się | Odniesienie do efektów uczenia się zdefiniowanych dla kierunku studiów | |||||||||||||||||||||||||
| Wiedza | Umiejętności | Kompetencje społeczne |
|||||||||||||||||||||||||
| Wiedza: student zna i rozumie | |||||||||||||||||||||||||||
| E1 | zasady budowy bezpiecznego kodu w C#, mechanizmy CLR oraz sposoby mitygacji podatności pamięci (overflow, use-after-free) | ||||||||||||||||||||||||||
| E2 | mechanizmy kryptografii stosowanej, bezpiecznej serializacji danych oraz zasady uwierzytelniania dostępne w .NET | ||||||||||||||||||||||||||
| E3 | techniki analizy binarnej (inżynieria wsteczna) oraz metody ochrony kodu (obfuskacja) przed dekompilacją | ||||||||||||||||||||||||||
| Umiejętności: student potrafi | |||||||||||||||||||||||||||
| E4 | tworzyć programy w C# stosując techniki defensywnej obsługi błędów, walidacji danych i silnej hermetyzacji składowych | ||||||||||||||||||||||||||
| E5 | wykorzystywać biblioteki kryptograficzne do zapewnienia poufności danych w spoczynku oraz bezpiecznego hashowania poświadczeń | ||||||||||||||||||||||||||
| E6 | analizować działanie własnego kodu w dekompilatorze i dobiera mechanizmy ograniczające wektory ataku na logikę aplikacji | ||||||||||||||||||||||||||
| Kompetencje społeczne: student jest gotów do | |||||||||||||||||||||||||||
| E7 | krytycznej oceny poziomu bezpieczeństwa wytworzonego kodu i uznaje potrzebę aktualizacji wiedzy o podatnościach | ||||||||||||||||||||||||||
| E8 | przejęcia odpowiedzialności za wybór mechanizmów ochrony danych i wykazuje rzetelność w dokumentowaniu działań security | ||||||||||||||||||||||||||
| Symbol efektu | Sposób weryfikacji efektu uczenia się | Forma zajęć na której zachodzi weryfikacja | |||||||||||||||||||||||||
| E1 | test otwarty (Wykład) | W | |||||||||||||||||||||||||
| E2 | test otwarty | W | |||||||||||||||||||||||||
| E3 | test otwarty | W | |||||||||||||||||||||||||
| E4 | implementacja, obrona zadań programistycznych | Ps | |||||||||||||||||||||||||
| E5 | implementacja, obrona i prezentacja zadań programistycznych | Ps | |||||||||||||||||||||||||
| E6 | implementacja, obrona i prezentacja zadań programistycznych | Ps | |||||||||||||||||||||||||
| E7 | prezentacja, obrona zadań programistycznych | Ps | |||||||||||||||||||||||||
| E8 | prezentacja, obrona zadań programistycznych | Ps | |||||||||||||||||||||||||
| Literatura podstawowa | |||||||||||||||||||||||||||
| 1. | J. Albahari, C# 12 w pigułce. Przewodnik dla programistów, Wydawnictwo Helion, Gliwice 2024 | ||||||||||||||||||||||||||
| 2. | A. Freeman, Pro ASP.NET Core 7. Tworzenie bezpiecznych i wydajnych aplikacji webowych, Wydawnictwo Helion, Gliwice 2023 | ||||||||||||||||||||||||||
| 3. | R.C. Martin, Czysty kod. Podręcznik dobrego programisty, Wydawnictwo Helion, Gliwice 2022 | ||||||||||||||||||||||||||
| 4. | J. Skeet, C# od podszewki. Wydanie IV, Wydawnictwo PWN / Helion, Gliwice 2019 | ||||||||||||||||||||||||||
| 5. | K. Dudek, M. Srebrny, Zmarzły B., Bezpieczeństwo systemów informatycznych, Wydawnictwo Naukowe PWN, Warszawa 2022 | ||||||||||||||||||||||||||
| Literatura uzupełniająca | |||||||||||||||||||||||||||
| 1. | Praca zbiorowa, Bezpieczeństwo danych i systemów informatycznych, Wydawnictwo PWN, Warszawa 2021 | ||||||||||||||||||||||||||
| 2. | A. Troelsen, P. Japikse, C# 10 i .NET 6. Nowoczesne programowanie, Wydawnictwo Helion, Gliwice 2022 | ||||||||||||||||||||||||||
| 3. | P. Pielichowicz, Testowanie i audyt bezpieczeństwa systemów informatycznych, Wydawnictwo Helion, Gliwice 2020 | ||||||||||||||||||||||||||
| 4. | R. Stephens, C#. Receptury. Wydanie IV, Wydawnictwo Helion, Gliwice 2021 | ||||||||||||||||||||||||||
| 5. | C. Kaufman, R. Perlman, M. Speciner, Bezpieczeństwo sieciowe. Prywatna komunikacja w świecie publicznym, Wydawnictwo Helion, Gliwice 2021 | ||||||||||||||||||||||||||
| Koordynator przedmiotu: | dr inż. Anna Borowska, dr Joanna Karbowska-Chilińska, dr inż. Krzysztof Ostrowski | Data: | 08/04/2026 | ||||||||||||||||||||||||