Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Język C/C++ Funkcje.
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Wykład 3 Prowadzący: dr Paweł Drozda
Skrypty, procedury przechowywane i wyzwalane
Algorytmy – zapis struktur programowania
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Język SQL Część II.
BD-LAB4 Wojciech Pieprzyca
Zabezpieczenia w programie MS Access
PROGRAMOWANIE STRUKTURALNE
Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05.
PHP + MySQL część II.
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
ODE Zapytania. Pętla for (1) Do obiektów będących instancjami klas możemy uzyskać dostęp za pomocą pętli for Zakres tej pętli to wszystkie obiekty klasy.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
Metody autoryzacji użytkowników wymaga integracji z systemem operacyjnym nie wymaga logowania mała pewność mechanizmu wymaga logowania duża pewność mechanizmu.
ZSBD PL/SQL CZĘŚĆ 3 Wykład 5 Prowadzący: dr Paweł Drozda.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Wykład 2 Wojciech Pieprzyca
Wykład 8 Wojciech Pieprzyca
Wykład 5 Wojciech Pieprzyca
Wykład 1 Wojciech Pieprzyca
Rozproszone bazy danych
Bezpieczeństwo danych
SQL - język relacyjnych i obiektowo-relacyjnych baz danych
„Relacyjne Bazy Danych (Oracle)”
Język SQL (Structured Query Language) DDL (Data Definition Language)
Bezpieczeństwo baz danych
Zarządzanie bezpieczeństwem w SZBD Oracle
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
SQL – Structured Query Language (3)
Podstawy programowania
MySQL – ODBC - ACCESS.
Podstawy programowania
Programowanie strukturalne i obiektowe
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Administracja serwerem bazy danych Oracle 11g Zarządzanie strukturą bazy danych Wykład nr 2 Michał Szkopiński.
Wyrażenia w Turbo Pascalu.
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
Linux - polecenia.
dr hab. Ryszard Walkowiak prof. nadzw.
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
MySQL bazy danych dla witryny
SQL - Structured Query Language
Instrukcje iteracyjne
Aplikacje bazodanowe ADO.NET PHP i MySQL
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 3.
Systemy Zarządzania Bazami Danych
Programowanie baz danych
Komendy SQL do pracy z tabelami i bazami
Bazy danych Microsoft access 2007.
PL/SQL – dalsza wędrówka
SQL – część II.
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Komendy SQL do pracy z danymi
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Pętle – instrukcje powtórzeń
Instrukcje warunkowe w php. Pętla FOR Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej.
Współpraca PHP i MySQL Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z danych zapisanych na serwerze jest współpraca z relacyjna.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Projekt „NEW-TECH Program rozwoju praktycznych kompetencji nauczycieli zawodów branż nowych technologii” jest współfinansowany przez Unię Europejską Projekt.
Widoki (views) - Perspektywy:
Strukturalny język zapytań SQL - historia
Technologie Informacyjne Bazy danych
Zapis prezentacji:

Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze Wykład 8 Prowadzący: dr Paweł Drozda

Użytkownicy – dostęp do danych (1) Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia – zakres czynności, które użytkownik może wykonać na bazie danych Uwierzytelnianie – weryfikacja użytkownika (w MySQL –na podstawie loginu i hasła zapisanego w bazie)

Użytkownicy – dostęp do danych (2) Dwa typy ograniczenia działań: Ograniczenie dostępu do poszczególnych danych (tabele, bazy danych) Ograniczenie wykonywania poszczególnych operacji (SELECT, UPDATE, itd.) Mechanizmy nakładające ograniczenia: System przywilejów Role bazodanowe (tylko Oracle)

Przywileje Prawo wykonywania przez użytkownika określonej akcji w bazie danych lub dostępu do określonego obiektu Przykłady przywilejów: Wstawianie do bazy Usuwanie z bazy Modyfikowanie rekordów Przeglądanie rekordów

Zarządzanie kontami – MySQL (1) Tworzenie użytkownika – bez żadnych przywilejów CREATE USER nazwa IDENTIFIED BY [PASSWORD] ‘hasło’; Usuwanie użytkownika DROP USER nazwa; Nadanie hasła SET PASSWORD [for nazwa]=PASSWORD(‘nowehaslo’); Przykład: SET PASSWORD FOR Stefan = PASSWORD(‘qwerty’);

Zarządzanie kontami – MySQL (2) Zmiana nazwy użytkownika RENAME USER staranazwa TO nowanazwa; Nadawanie przywilejów – GRANT GRANT rodzajePrzywilejów[(nazwyKolumn)] ON nazwyObiektów TO listaUzytkowników [IDENTIFIED BY [PASSWORD] ‘haslo’] [WITH opcje];

GRANT – przywileje (1) Możliwe przywileje ALL – nadanie wszystkich przywilejów oprócz GRANT OPTION ALTER – możliwość modyfikacji struktury DELETE – możliwość usunięcia danych INDEX – możliwość tworzenia i usuwania indeksu INSERT – możliwość wstawiania danych CREATE – możliwość tworzenia tabel GRANT OPTION – możliwość nadawania uprawnień

GRANT – przywileje (2) Możliwe przywileje (cd) CREATE USER – możliwość tworzenia użytkowników CREATE VIEW – możliwość tworzenia perspektyw DROP – możliwość usuwania tabel LOCK TABLES – możliwość blokowania SHOW DATABASES – możliwość obejrzenia wszystkich baz danych w systemie UPDATE – możliwość uaktualnień

GRANT, przywileje – przykłady GRANT SELECT, DELETE, INSERT, UPDATE ON *.* TO student; GRANT SHOW DATABASES ON *.* TO student; GRANT ALTER, DROP, CREATE ON bazka.* TO student;

GRANT – obiekty Rodzaje obiektów *.* - dostęp do wszystkich baz danych w systemie Nazwa.* - dostęp do bazy o nazwie Nazwa Nazwa – dostęp do tabeli o nazwie Nazwa w aktualnej bazie Baza.Tabela – dostęp do tabeli Tabela w bazie danych Baza

GRANT obiekty - przykłady GRANT INSERT ON Biblioteka.* TO Bibliotekarz; GRANT UPDATE(zarobki) ON Uni.Pracownik TO Płace; GRANT ALL ON *.* TO Administrator; Use Pizzeria GRANT SELECT ON Zamowienia TO Kelner;

GRANT – użytkownicy (1) Używając GRANT dla istniejącego użytkownika – zmiana przywilejów GRANT dla nieistniejącego użytkownika – powstaje nowy użytkownik z przywilejami określonymi w poleceniu Hasło gdy powstaje nowy użytkownik bez hasła – logowanie bez hasła Gdy ze słowem PASSWORD ‘hasło’ – hasło musi być zakodowane funkcją PASSWORD Bez PASSWORD ‘hasło’ – hasło podane jako tekst

GRANT – użytkownicy (2) Użytkownik PUBLIC – przywileje nadane dla wszystkich użytkowników Przykłady DROP USER Szukacz; GRANT SELECT ON *.* TO Szukacz; CREATE USER Tworca IDENTIFIED BY ‘wielki’; GRANT CREATE ON nowa.* TO Tworca; GRANT ALL ON *.* TO ADMIN IDENTIFIED BY PASSWORD ‘6af4442460ade563’; GRANT SELECT ON Test.* TO PUBLIC;

GRANT - opcje GRANT OPTION – możliwość nadawania posiadanych uprawnień innym użytkownikom MAX_QUERIES_PER_HOUR – max liczba zapytań na godzinę MAX_UPDATES_PER_HOUR – max liczba aktualizacji na godzinę MAX_CONNECTIONS_PER_HOUR = max liczba połączeń na godzinę MAX_USER_CONNECTIONS – max liczba jednoczesnych połączeń jednego użytkownika Gdy parametry zero – brak ograniczeń

Usuwanie przywilejów REVOKE – składnia Przykład: REVOKE rodzajePrzywilejów ON nazwyObiektów FROM użytkownicy; Przykład: REVOKE ALTER, DROP on Baza.* FROM Tworca; REVOKE ALL, GRANT OPTION FROM student;

Procedury składowane Zbiór instrukcji SQL wykonywanych jako jedno polecenie Możliwości: przekazywania parametrów do procedury Wywołanie większości poleceń SQL (również innych procedur) Dodanie fragmentu logiki po stronie bazy danych Aby móc utworzyć procedurę składowaną – niezbędny przywilej CREATE ROUTINE

Procedury składowane - rodzaje Wywołane poleceniem CALL Wynik w formie tabeli Odwołuje się do referencji (IN, OUT) Może używać poleceń SQL Może wywoływać procedury i funkcje Funkcje Mogą być wbudowane w polecenie SQL Zwracają pojedyncze wartości Przekazywanie parametrów Brak możliwości wywołania poleceń dotyczących tabel Nie może odwoływać się do procedur

Funkcje – składnia (1) Tworzenie funkcji Zmienne w funkcjach CREATE FUNCTION nazwa(lista parametrow) RETURNS typ zwracanej zmiennej polecenia funkcji Blok BEGIN – END Gdy występuje w funkcji więcej niż jedna instrukcja – grupowanie w blok BEGIN – END Zmienne w funkcjach Zwykłe – poprzedzone @ Lokalne – deklarowane przy użyciu DECLARE, aktualne tylko w bloku BEGIN END DECLARE zmienna1, zmienna2 , … typDanych [DEFAULT wartosc]

Funkcje – składnia (2) Pętle w MySQL CASE REPEAT ciagInstrukcji UNTIL warunek END REPEAT; Opuszczenie pętli – LEAVE Wymuszenie kolejnej iteracji – ITERATE WHILE warunek DO instrukcje; END WHILE; CASE CASE wyrażenie WHEN wartość1 THEN polecenia; WHEN wartość2 THEN polecenia; WHEN wartość3 THEN polecenia; else polecenia; END CASE;

Funkcje – składnia (3) Usuwanie Pokazanie składni funkcji DROP FUNCTION [IF EXISTS] nazwa Pokazanie składni funkcji SHOW CREATE FUNCTION nazwa Wyświetlenie statusu funkcji SHOW FUNCTION STATUS Informacje na temat funkcji Tabela information_schema.routines

Funkcja – przykład(1) CREATE FUNCTION silnia(n INT) RETURNS int(11) BEGIN DECLARE i INT DEFAULT 1; DECLARE silnia INT DEFAULT 1; REPEAT SET i=i+1; SET silnia=silnia*i; UNTIL i>=n END REPEAT; RETURN silnia; END

Funkcja – przykład(2) CREATE FUNCTION silnia1(n INT) RETURNS int BEGIN DECLARE i INT DEFAULT 1; DECLARE silnia INT DEFAULT 1; BEGIN IF (n=0) THEN RETURN 1; ELSE REPEAT SET i=i+1; SET silnia=silnia*i; UNTIL i>=n END REPEAT; RETURN silnia; END IF; END

Funkcja – przykład(3) CREATE FUNCTION shorten(s VARCHAR(255), n INT) RETURNS VARCHAR(255) BEGIN IF ISNULL(s) THEN RETURN ''; ELSEIF n<15 THEN RETURN LEFT(s, n); ELSE IF CHAR_LENGTH(s) <= n THEN RETURN s; ELSE RETURN CONCAT(LEFT(s, n-10), ' ... ', RIGHT(s, 5)); END IF; END

Procedury – składnia Tworzenie CREATE PROCEDURE (IN|OUT|INOUT zmienne typ) Pola IN określają parametry wejściowe Pola OUT określają parametry zwracane Pozostałe elementy – tak jak w funkcjach (zamiast FUNCTION należy wstawić PROCEDURE)

Procedury – przykład(1) CREATE PROCEDURE Studenci(OUT ile int) SELECT COUNT(*) INTO ile FROM Student Wywołanie CALL Studenci(@a); SELECT @a; CREATE PROCEDURE pobierz (out nazwa VARCHAR(50), in skrot VARCHAR(5)) BEGIN SELECT opis INTO nazwa FROM skroty WHERE skrot_id=skrot LIMIT 1; END

Wyzwalacze Pozwalają wykonywać ciąg poleceń SQL przed lub po jednym z poleceń INSERT, UPDATE, DELETE wykonanym na ustalonej tabeli Unikalne nazwy dla tej samej tabeli Brak możliwości wywołania CALL, poleceń transakcji wewnątrz wyzwalacza

Wyzwalacze - składnia(1) Tworzenie Tylko dla użytkowników z uprawnieniami SUPER CREATE TRIGGER nazwa BEFORE|AFTER INSERT|UPDATE|DELETE ON tabela FOR EACH ROW ciag polecen; Dostęp do kolumn rekordu OLD.nazwakolumny – wartość przed wykonaniem polecenia NEW.nazwakolumny – wartość po wykonaniu polecenia Usuwanie wyzwalaczy DROP TRIGGER nazwatabeli.nazwawyzwalacza Wyświetlanie SHOW TRIGGERS

Wyzwalacze - przykład CREATE TABLE test1(a1 INT); CREATE TABLE test2(a2 INT); CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY); CREATE TABLE test4( a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b4 INT DEFAULT 0 ); delimiter | CREATE TRIGGER testref BEFORE INSERT ON test1 FOR EACH ROW BEGIN INSERT INTO test2 SET a2 = NEW.a1; DELETE FROM test3 WHERE a3 = NEW.a1; UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1; END; |

Wyzwalacze – przykład cd. delimiter ; INSERT INTO test3 (a3) VALUES (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL); INSERT INTO test4 (a4) VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0), (0); INSERT INTO test1 VALUES (1), (3), (1), (7), (1), (8), (4), (4);