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