Internetowe Bazy Danych

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
SQL INJECTION Wykorzystanie błędów w językach skryptowych
MS Access 2000 Relacje Piotr Górczyński 2005.
Bezpieczeństwo aplikacji WWW
PHP + MySQL część II.
WPROWADZENIE DO BAZ DANYCH
Kwerendy –wszystkie typy (usuwające, aktualizujące i inne)
Obsługa plików csv Do odczytu z pliku csv można użyć następującego kodu: $fp = fopen ("strony.csv","r"); $num = 0; while ($data = fgetcsv ($fp, 1000, ";"))
Obsługa bazy danych z poziomu phpMyAdmin
Proxy (WWW cache) Sieci Komputerowe
Rozproszone bazy danych
Systemy zarządzania treścią CMS
PROJEKTOWANIE TABEL W PROGRAMIE: ACCESS
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Bazy danych.
ANNA BANIEWSKA SYLWIA FILUŚ
Bazy danych podstawowe pojęcia
Systemy baz danych Wykład 1
Systemy zarządzania treścią Content Management System
BAZA DANYCH AMATORSKIEJ DRUŻYNY PIŁKI HALOWEJ
Bazy danych.
Informatyka Relacyjne bazy danych.
SQL - Structured Query Language
Aplikacje bazodanowe ADO.NET PHP i MySQL
Zarządzanie informacją
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Wybrane zagadnienia relacyjnych baz danych
WPROWADZENIE DO BAZ DANYCH
Operacje edycyjne w bazie danych - kwerendy funkcjonalne Marzena Nowakowska Katedra Informatyki Stosowanej, WZiMK, PŚk.
Komendy SQL do pracy z tabelami i bazami
MICROSOFT Access TWORZENIE MAKR
18/11/ Języki programowania 1 Piotr Górczyński Kontrolki.
1 Każdy obiekt jest scharakteryzowany poprzez: tożsamość – daje się jednoznacznie wyróżnić; stan; zachowanie. W analizie obiektowej podstawową strukturą
Bazy danych Microsoft access 2007.
Temat 12: Formularze.
Jak dodać funkcjonalność płatności internetowej PayU do strony WWW
Projektowanie stron WWW
Aplikacje internetowe
W W W Łukasz Stochniał.
Archiwizacja bazy danych
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Zbiór danych zapisanych zgodnie z określonymi regułami. W węższym znaczeniu obejmuje dane cyfrowe gromadzone zgodnie z zasadami przyjętymi dla danego.
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
Podstawy języka skryptów
Opracowanie mgr Karol Adamczyk
Jak wykonać prosty licznik odwiedzin strony internetowej?
Komendy SQL do pracy z danymi
Relacja (ang.relation) Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do systemu bazy danych informacje na temat.
Bazy danych Podstawy relacyjnych baz danych Autor: Damian Urbańczyk.
Projektowanie postaci formularza:
BAZY DANYCH MS Access.
Portal edukacyjny A.Ś. Tworzenie kwerend w programie Access.
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Portal edukacyjny J A V A S C R I P T JĘZYK PROGRAMOWANIA STRON HTML Opracowała: Anna Śmigielska.
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Moduł ECDL-AM5 Bazy danych, poziom zaawansowany Tabele, relacje.
Prezentacja programu PowerPoint
Bazy danych. Baza danych (database) – magazyn danych – informacji powiązanych tematycznie, umożliwiający ich wyszukiwanie według zadanych kryteriów Baza.
Temat: Tworzenie bazy danych
SQL Server Analysis Services Action!
Tworzenie konta pocztowego na portalu Google
Tworzenie konta pocztowego na portalu Google
Kurs Access.
AudaPad / AudaShare AudaShare PRO (2.8)
Strukturalny język zapytań SQL - historia
Czym są i jak służą społeczeństwu?
Zapis prezentacji:

Internetowe Bazy Danych

Czym są więc internetowe bazy danych? Baza danych (data base) – to uporządkowany zbiór danych z pewnej dziedziny tematycznej, zorganizowany w sposób umożliwiający ich wyszukiwanie według zadanych kryteriów. Czym są więc internetowe bazy danych? To po prostu zbiór danych dostępny w Internecie z możliwością edycji i zarządzania nim. Często stosowane są relacyjne bazy danych – podzbiory danych są ze sobą powiązane, współpracują ze sobą.

FUNKCJE BAZY DANYCH Funkcje zależne od użytkownika: tworzenie baz danych i tabel dodawanie i usuwanie danych wyszukiwanie danych („zapytania”, kwerendy) czynności administracyjne Funkcje zależne od oprogramowania: zarządzanie fizycznymi zbiorami danych wykonywanie poleceń użytkownika prezentacja wyników operacji

Dlaczego bazy danych w Internecie zamiast segregatorów z dokumentami ? poprawa wydajności pracy, „dostęp” klienta do firmy w każdej chwili, poprawa wizerunku firmy, w przypadku sklepów internetowych brak kosztów związanych z obsługą, obniżenie kosztów transakcji lub dystrybucji informacji, zwiększenie liczby klientów, lepszy obieg informacji, zbieranie informacji na temat upodobań klientów.

Co na minus? możliwość ingerencji hakerów, awarie sprzętu i błędy w oprogramowaniu, częsta aktualizacja danych, nieprzemyślany lub niedopracowany projekt interfejsu, słaby przekaz, złe oszacowanie kosztów przedsięwzięcia, często zmieniające się przepisy prawne.

Relacyjna baza danych (ang.database) –- zbiór danych w postaci tabel połączonych relacjami. Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do systemu bazy danych informacje na temat sposobu poprawnego łączenia powiązanych danych w logiczną całość. W tym celu definiuje się relacje między tabelami. Typy relacji: jeden-do-jednego, jeden-do-wielu, wiele-do-wielu.

W relacji jeden-do-jednego każdy rekord w w jednej tabeli jest powiązany bezpośrednio z jednym rekordem w innej tabeli. Ten typ relacji spotyka się rzadko, ponieważ większość informacji powiązanych w ten sposób byłoby zawartych w jednej tabeli. Relacji jeden-do-jednego można używać do podziału tabeli z wieloma polami, do odizolowania części tabeli ze względów bezpieczeństwa, albo do przechowania informacji odnoszącej się tylko do podzbioru tabeli głównej.

W relacji jeden-do-wielu rekord w jednej tabeli jest powiązany z wieloma rekordami w innej tabeli, ale rekordy w drugiej tabeli są powiązane tylko z jednym rekordem w pierwszej tabeli. W relacji wiele-do-wielu rekord w jednej tabeli jest powiązany z wieloma rekordami w innej tabeli, a rekord w drugiej tabeli jest powiązany z wieloma rekordami w pierwszej tabeli. Ten typ relacji wymaga trzeciej tabeli zwanej tabelą skrzyżowań. W tabeli skrzyżowań znajdują się klucze podstawowe z pozostałych dwóch tabel, które są kluczami obcymi tej tabeli.

Zastosowanie serwisy WWW , sklepy internetowe, e – commerce, szkolne dzienniki elektroniczne, serwery poczty WWW, portale społecznościowe, fora internetowe, bazy dokumentów.

SKUTKI ZAGROŻEŃ Kradzież i defraudacja (nielegalne przywłaszczenie sobie cudzej własności lub zatrzymanie powierzonego mienia). • Utrata poufności/tajności. • Utrata prywatności. • Brak integralności. • Uniemożliwienie dostępu.

Iniekcja kodu SQL Iniekcja kodu SQL (SQL Injection) polega na takiej manipulacji aplikacją komunikującą się z bazą danych, aby ta umożliwiła atakującemu uzyskanie dostępu lub modyfikację danych, do których nie posiada on uprawnień. Odbywa się to poprzez wprowadzanie spreparowanych ciągów znaków do zmiennych przekazywanych serwisom WWW, aby zmieniały one sens wykonywanych przez ten serwis zapytań SQL.

Pierwszy krok polega na modyfikowaniu parametrów wejściowych oraz śledzeniu zmian w zachowaniu aplikacji. Przykładowo witryny czasem zwracają komunikaty błędów w interpretacji kodu PHP bezpośrednio na wyjście do przeglądarki. W efekcie atakujący może, poprzez odpowiednią manipulację parametrów (np. 'ZłaWartość, ZłaWartość', ' OR, ;, 9,9,9 ) sztucznie wywoływać te błędy, dzięki czemu ma okazje przeanalizować sposób działania aplikacji. W ten sposób napastnik może zdobyć informacje o wyglądzie zapytań SQL, a nawet poznać strukturę bazy danych.

Atak SQL Injection wykorzystuje następujące trzy elementy działania aplikacji internetowej : • dynamicznie tworzone zapytania – zapytanie zależne jest od danych wejściowych, często pochodzących od użytkownika, • ostateczna forma zapytania tworzona jest w wyniku połączenia oryginalnej statycznej części zapytania z parametrami dynamicznym, np. $zapytanie =“SELECT * FROM uzytkownicy WHERE id=”.$_GET['id']; - Parametrem dynamicznym jest tutaj zmienna $_GET['id'] pochodząca z adresu URL, • słaba walidacja (lub jej brak) danych wejściowych używanych w zapytaniu.` Walidacja –  działanie mające na celu potwierdzenie w sposób udokumentowany i zgodny z założeniami, że procedury, procesy, czynności i systemy rzeczywiście prowadzą do zaplanowanych wyników.

Obrona przed iniekcją wrogiego kodu polega na sprawdzaniu poprawności wprowadzanych przez użytkownika danych. Sprawdzanie poprawności wszystkich wpisanych danych – weryfikowanie wszystkich informacji, np. po naciśnięciu przycisku „Wyślij”. Sprawdzanie poprawności przesłanych do bazy danych informacji - dopiero po przesłaniu informacji do serwera i odebraniu ewentualnych komunikatów błędów, użytkownik dowiaduje się, czy np. nie pominął wymaganych informacji. Uniemożliwianie użytkownikom programu wpisanie niepoprawnych danych. Sprawdzanie poprawności poszczególnych danych – weryfikowanie każdej nowej informacji podanej przez użytkownika.

Cross Site Scripting (XSS) Atak polega na iniekcji złośliwego kodu w oryginalną treść strony. Aby agresor mógł skutecznie wykorzystać taką lukę, użytkownik końcowy musi podjąć jakieś działania – może to być kliknięcie na łączu lub odwiedzenie strony, w którą wstrzyknięto wrogi kod. Kod ten jest najczęściej tworzony przy użyciu języka JavaScript, oraz technologii wykonywanych po stronie klienta, takie jak Ajax, VBScript czy Flash. Cross Site Scripting dotyka szczególnie te strony internetowe, gdzie zachodzi interakcja z użytkownikami lub też wyświetlane są jakiekolwiek dane pochodzące z zewnątrz, np. fora internetowe, serwisy aukcyjne, sklepy internetowe z opcją komentowania i recenzowania produktów, systemy kont pocztowych dostępne przez protokół HTTP i inne. Cross Site Scripting pozwala napastnikowi między innymi na wykradnięcie wartości przechowywanych w ciasteczkach (ang. cookies).

Atak XSS składa się z następujących etapów: 1. odnalezienie luki, a następnie przekazanie do aplikacji złośliwego kodu, 2. nieświadome pobranie i wykonania tego kodu przez ofiarę, 3. dodatkowe akcje wykonywane przez atakującego. Odnalezienie luki i sprawdzenie czy dana aplikacja jest podatna na Cross Site Scripting to niezbyt trudne zadanie. W większości przypadków sprowadza się do żmudnego wprowadzania w pola formularzy HTML odpowiednio przygotowanego kodu. ';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83 ,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCod e(88,83,83))//></script>!­­ <script>alert(String.fromCharCode(88,83,83))</script>=&{}

Można też wykorzystać skrócony kod: Wykonanie powyższych instrukcji języka JavaScript spowoduje wyświetlenie monitu z komunikatem o treści “XSS” (jeśli tylko występuje podatność). Można też wykorzystać skrócony kod: '';!­­"<XSS>=&{()} W tym przypadku wystarczy zajrzeć do źródła strony i zobaczyć czy w treści występuje ciąg <XSS czy też <XSS. Ten pierwszy oznacza, że witryna nie posiada odpowiednich filtrów danych wejściowych i jest podatna na atak.

Równie dobrze można użyć żądania GET, np. atak XSS”)</script> Odnośniki uruchamiane przez użytkownika powodują przekierowanie na serwer napastnika, gdzie zostanie przez niego odczytana wartość ciasteczka (cookie) lub zostanie wyświetlony fałszywy komunikat o wygaśnięciu sesji, a użytkownik zostanie poproszony o podanie swojego hasła.

Iniekcja znaku końca wiersza Aplikacja internetowa często używa lub zapisuje dane tabelaryczne, które oddzielane są znakiem końca wiersza, np. wpisy w dzienniku zdarzeń, nagłówki HTTP czy też nagłówki wiadomości elektronicznej. Iniekcja znaku końca wiersza pozwala atakującemu na dodanie własnych danych lub nagłówków. Do pozostałych zagrożeń związanych z wykonaniem wrogiego kodu należą : • przekazanie wrogiego kodu do funkcji interpretujących i wykonujących kod PHP, • modyfikacja ścieżki dostępu lub nazwy pliku, • przetworzenie wrogiego skryptu z obcego serwera, • modyfikacja nazw dynamicznie tworzonych zmiennych lub funkcji.

Manipulowanie łańcuchem żądania Łańcuch żądania (adres URL) powszechnie używany jest do wskazania konkretnej strony WWW. Zagrożenie polega na tym, że atakujący może samodzielnie zmodyfikować składniki adresu URL i w ten sposób uzyskać dostęp do poufnych danych albo je nieprawidłowo zmodyfikować. Włamywacz może także doprowadzić do wyświetlenia w oknie przeglądarki błędów wynikających z błędu języka skryptowego czy też nieprawidłowego zapytania kierowanego do bazy, co może mu pozwolić na zebranie informacji potrzebnych do przeprowadzania włamania. Poza tym, manipulowanie łańcuchem żądania może być z powodzeniem wykorzystane przy dokonywaniu wielu innych rodzajów ataku na aplikacje internetowe, od Cross Site Scripting i iniekcji kodu SQL do prób ujawnienia kodu źródłowego i innych poufnych danych.

Manipulowanie polami formularza Dane podawane w formularzach webowych zazwyczaj przesyłane są metodą POST i nie są umieszczane w adresie URL. Atakujący może jednak pobrać kod HTML formularza, a następnie zmodyfikować go i wysłać żądanie z własnego komputera albo wstrzyknąć odpowiednio przygotowany kod HTML formularza bezpośrednio na stronę. Napastnik najpierw analizuje budowę atakowanej strony, a następnie wysyła spreparowane żądania HTTP w celu poznania lub wymuszenia pożądanego zachowania witryny. Atakujący może przerobić formularz HTML według własnego uznania. Na szczególną uwagę zasługują pola ukryte, które stanowią wygodny sposób na przekazywanie różnych danych pomiędzy kolejnymi podstronami. Zagrożenie pojawia się wtedy, gdy są to dane kluczowe, takie jak np. cena produktu czy poziom uprawnień. Konsekwencje modyfikacji tych parametrów przez napastnika są oczywiste. Tego typu błędy znajdują się nawet w dużych, komercyjnych aplikacjach.

Manipulowanie nagłówkami żądania HTTP Nagłówki żądania HTTP służą do przekazywania serwerowi przez klienta informacji o sobie i swojej konfiguracji oraz preferowanych formatach dokumentów. Atakujący może napisać własny skrypt wysyłający żądania HTTP lub skorzystać z jednego z darmowych i ogólnie dostępnych serwerów Proxy, które umożliwiają modyfikacje dowolnych danych wysyłanych z przeglądarki. Zagrożenie jest realne, tymczasem w języku PHP wartości pól nagłówków HTTP, obok wielu innych parametrów, są umieszczone w tablicy globalnej $_SERVER, której nazwa może sugerować o tym, że pochodzą one z bezpiecznego źródła. Niestety poprawność zapisanych w tych polach nagłówków nie jest automatycznie sprawdzana, przez co powinny być traktowane jako potencjalne zagrożenie. Stanowi to problem szczególnie jeśli nagłówki te są wykorzystywane dla wzmocnienia bezpieczeństwa. Przykładowo nagłówek Referer może być użyty do sprawdzania czy żądanie zostało wysłane z właściwiej podstrony. Celem jest przeciwdziałanie zapisywaniu witryny na dysk, a następnie modyfikacji formularza i wysłania go z własnego komputera przez atakującego. Jednak fakt, że wartość nagłówka, na którym opiera się to zabezpieczenie, może być łatwo zmodyfikowane, sprawia że osiągnięto tutaj efekt odwrotny od zamierzonego – umożliwiono przeprowadzenie ataku tam, gdzie ze względu na zaimplementowane funkcje ochronne, nikt się tego nie będzie spodziewał.

Manipulowanie wartościami ciasteczek Mechanizm ciasteczek (cookies) opiera swoje działanie o niewielkie pliki tekstowe, składowane na komputerze użytkownika. Poprawność zapisanych w ciasteczkach danych nie jest automatycznie sprawdzana – żadne sumy czy kody kontrolne nie są zapisywane razem z danymi, dlatego pozwala nie tylko odczytać, ale również zmodyfikować plik ciasteczka, zmieniając wartości parametrów czy dopisując nowe parametry i ich wartości. Podobnie jak adresy URL, pola formularzy oraz nagłówki HTTP, jako dane pochodzące z zewnątrz, także cookies nie powinny być używane w aplikacji bez wcześniejszej filtracji i walidacji.

INNE ATAKI: • Zwyczajne ataki siłowe (normal brute force attacks) – atakujący używa nazwy użytkownika i dopasowywuje do niego hasła. Odwrócone ataki siłowe (reverse brute force attacks) – atakujący używa jednego hasła i dopasowuje do nich nazwy użytkowników. W systemach z milionami kont, prawdopodobieństwo tego, że wielu użytkowników posiada to samo hasło jest wysokie. • Atak słownikowy (dictionary attack) - zautomatyzowany atak skierowany przeciwko systemowi uwierzytelniania, który polega na sprawdzeniu kolejnych, gotowych haseł znajdujących się w bazie danych, tzw. Słowniku.

• Atak siłowy (brute-force password attack) - polega na omijaniu zabezpieczeń systemu przez podejmowanie prób zalogowania się przy użyciu każdego dopuszczalnego hasła; w tej metodzie analizowany jest każdy możliwy przypadek. • Podawanie się za administratora systemu i wysyłanie wiadomości poczty elektronicznej do użytkowników z prośbą o podanie haseł. • Utworzenie lustrzanej kopii strony logowania witryny i nakłanianie użytkowników do prób logowania (Phishing).

Prezentację wykonała Agnieszka Żochowska w ramach Regionalnego programu stypendialnego dla uczniów szczególnie uzdolnionych 2012/2013. Źrodła: www.office.microsoft.com www.staff.amu.edu.pl www.wikipedia.org home.agh.edu.pl technet.microsoft.com