Zabezpečení DB. Při práci s webovou aplikací je potřeba zvážit tři hlavní aspekty zabezpečení: 1. Způsob uložení dat na serveru – je nutné chránit především.

Slides:



Advertisements
Podobné prezentace
Makra v Excelu.
Advertisements

Databázové systémy Zabezpečení DBS. Cíle, které je třeba vzít v úvahu při návrhu databázové aplikace z pohledu bezpečnosti: •Důvěrnost - informace by.
MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
ŘÍDÍCÍ STRUKTURY - PODMÍNKY
Co je to uživatelské menu? Ve WinBase si můžeme ke každé aplikaci vytvořit vlastní menu, které po otevření nahradí standardní menu WinBase. Toto uživatelské.
Základy jazyka SQL Jan Tichava
Ladislav Hofman, Jan Slavík TUL Předmět databázové systémy
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
LOV, Listbox, Poplist a Combobox v Oracle Forms LOV – seznam hodnot, které se zobrazí po stisku klávesy Enter v textovém poli. LOV – seznam hodnot, které.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Fakulta elektrotechniky a informatiky
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Databáze Jiří Kalousek.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Databázové systémy Štěpán Šípal.
Caché Security. Jak vypadá zabezpečení dnes Jak bude vypadat a co by Caché měla umět v budoucnu Včera, dnes a zítra.
Databáze Úvod.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Pravidelné zálohování dat
Tabulkový procesor.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Hromadná korespondence, makro
PHP – Základy programování
Relační databáze.
Vypracoval: Ondřej Dvorský Třída: VIII.A
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Číslo šablony: III/2 VY_32_INOVACE_P4_3.8 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze – základy SQL Typ: DUM - kombinovaný.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy II Přednáška č. 9. Transakce je logická jednotka práce sestávající z jednoho nebo více SQL příkazů, které jsou atomické z hlediska.
PHP PHP a MySQL - 15 Mgr. Josef Nožička IKT PHP
Copyright (C) 2000 Vema, a. s.1 V3 klient Michal Máčel Provozní integrace G2, HR/Win a internetu.
PHP Vytváření formuláře.
Aplikační a programové vybavení
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
Shrnutí Chceme–li připojit PC k Internetu musíme: 1.Zadat adresu DNS serveru (začne pracovat převod IP adresa  symbolické jméno), prakticky začne fungovat.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Základní obeznámení s jazykem SQL Databázové systémy.
KIV/ZIS cvičení 4 Tomáš Potužák. Dotazy - úvod Umožňují pracovat s databází –Získávat specifické informace z tabulky, případně z více tabulek najednou.
Databázové Aplikace Slidy ke cvičení DBI026, část 3 KSI MFF UK Verze
Internetové protokoly Autor: Milan Bílek. Internet Internet je celosvětová systém propojených počítačových sítí. Počítače mezi sebou komunikují pomocí.
Databázové systémy Zabezpečení DBS. Cíle, které je třeba vzít v úvahu při návrhu databázové aplikace z pohledu bezpečnosti: Důvěrnost - informace by neměly.
Ovládací panely Uživatelské účty II. Název a adresa školy: Střední odborné učiliště stavební, Opava, příspěvková organizace, Boženy Němcové 22/2309, 746.
24 Používání relačních databází (základní pojmy a principy z oblasti relačních databází, struktura databáze,oblasti použití relačních databází, vkládání.
Úvod do databází zkrácená verze.
Vytváření tabulek MS Access (4). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro.
● Databaze je soubor dat,slouží pro popis reálného světa(např.evidence čkolní knihovny..) ● Relační databaze je databáze založená na relačním modelu.
BEZPEČNOSTNÍ TECHNOLOGIE I Operační program Vzdělávání pro konkurenceschopnost Projekt: Vzdělávání pro bezpečnostní systém státu (reg. č.: CZ.1.01/2.2.00/ )
Import dat Access (16). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro tělesně.
Význam relací Typy relací Vytvoření relace Nastavení relace Podtypy relace Referenční integrita.
Databáze MS ACCESS 2010.
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
Bezpečnostní technologie I
Databázové systémy a SQL
Šablona 32 VY_32_INOVACE_038.ICT.34
Databázové systémy a SQL
Jak vytvořit výstupní bezpečnostní předpis k řízení rizik
Přednáška 9 Triggery.
HASH.
Transkript prezentace:

Zabezpečení DB

Při práci s webovou aplikací je potřeba zvážit tři hlavní aspekty zabezpečení: 1. Způsob uložení dat na serveru – je nutné chránit především samotnou databázi MySQL, jednak nastavením vhodných uživatelských oprávnění, jednak ochranou adresáře, ve kterém jsou ukládána používaná data. 2. Ochrana citlivých informací – vytvoření neveřejné části aplikace, ke které má přístup pouze správce. 3. Zabezpečení dat během přenosu – je nutné použít zabezpečených transakcí. K tomu se používá na serveru protokol SSL (Secure Sockets Layer), ke kterému se připájí platný certifikát serveru. Hlavní aspekty

Webová aplikace by měla s ohledem na zabezpečení : používat specifického uživatele databáze MySQL server MySQL by neměla používat jako uživatel ROOT, ani jako anonymní uživatel. Proto je potřebné vytvořit na serveru MySQL nového uživatele jemuž nastavíme heslo a přístup pouze na vybranou databázi. Tento uživatel by měl mít oprávnění pouze ke spouštění přidávacích, aktualizačních a výběrových dotazů. Tím se minimalizuje riziko zneužití přístupových informací. Databáze MySQL - uživatelská oprávnění

Každý uživatel v systému MySQL může mít specifická oprávnění ve vybraných databázích, podle toho, z jakého počítače se k databázi připojuje. Uživatel ROOT má nejvyšší pravomoci – superuživatel – a používá se při tvorbě dalších uživatelů. Je možné i novému uživateli udělit oprávnění superuživatel. Informace o uživatelích a jejich oprávněních jsou uloženy v databáze mysql v tabulkách db, host, user, func, tables_priv a columns_priv. Tvorba uživatelů a jejich práv

Uživatele a jeho oprávnění je možné definovat různými způsoby. Prostřednictvím monitoru mysql se k tomu používá příkaz GRANT: GRANT oprávnění ON databáze.* TO uživatel IDENTIFIED BY ’heslo’; Hvězdička znamená, že chcete oprávnění nastavit pro všechny tabulky v databázi. Tvorba uživatelů a jejich práv

Seznam privilegií OprávněníUmožňuje SELECTProhlížení a výběr dat z tabulek INSERTPřidávání dat do tabulek UPDATEÚpravu existujících dat v tabulkách DELETEOdstraňování existujících dat z tabulek INDEXVytvářet a odstraňovat indexy ALTERUpravovat strukturu tabulek CREATEVytvářet nové tabulky nebo databáze DROPOdstraňovat tabulky nebo databáze RELOADOpětovně načíst tabulku oprávnění SHUTDOWNZastavit server MySQL PROCESSProhlížet zastavit existující procesy MySQL FILEImportovat data z textových souborů GRANTVytvářet nové uživatele REVOKEOdebrat uživatelům oprávnění

Chceme-li definovat pouze specifický počítač, či doménu, bude příkaz GRANT vypadat následovně: GRANT oprávnění ON databáze.* TO IDENTIFIED BY ’heslo’; Vytvoření nového uživatele

Uživatel „ferda“ se bude moci přihlásit z počítače, na kterém je spuštěn server MySQL s heslem „mravenec“ a bude mít udělená uživatelská práva. Uživatelské jméno může obsahovat maximálně 16 znaků. Rozlišuje se velkost písmen. Heslo nemá omezení na délku a rovněž se v něm rozlišuje velkost písmen. Heslo je zašifrováno v databázi – není možné ho přímo převést do podoby prostého textu.

K tomu slouží příkaz: FLUSH PRIVILEGES; Nové uživatele je samozřejmé možné vytvářet i jinak, např. s použitím phpMyAdmin. Je zde ale potřeba rozumět vztahům mezi tabulkami databáze mysql. Změny v nastavení uživatelů

Tabulka DB

Tabulka USER

Pro zadávání a správu uživatelů, kteří budou mít přístup k vytvářené databázi se používá speciální tabulka, ve které budou uložené všechny důležité informace – hlavně uživatelské jméno a heslo, se kterými se bude zaregistrovaný uživatel hlásit k databázi. Taková tabulka se nejčastěji nazývá uzivatele. Může mít např. takovouto strukturu: Uživatelská databáze

Z bezpečnostních důvodů se pro zašifrování hesla používá funkce PASSWORD( ). Tato funkce vytvoří zašifrovaný řetězec, který má vždy délku 16 znaků. Je to jednocestná šifrovací technika, tzn. dešifrovat takto šifrovaná data je prakticky nemožné.Není teda vhodná pro šifrování dat, která budeme chtít ještě prohlížet. Zabezpečení hesla

Pokud bychom chtěli ukládat data v zašifrované podobě, kterou lze dešifrovat, je možné použít funkce: ENCODE( ) pro zakódování a DECODE( ) pro dekódování. INSERT INTO uzivatele (uziv_jmeno, heslo) VALUES ('ferda', ENCODE(mravenec, 'x1x2x3')); SELECT DECODE(heslo, 'x1x2x3') FROM uzivatele WHERE uziv_jmeno = 'ferda'; Takovýto způsob šifrování se využívá pro zabezpečení informací typu rodné číslo, číslo kreditní karty…, tj. informací, které chceme chránit, ale bude je třeba uživatelům zpřístupnit. Zabezpečení dat

Databázové triggery Databázový trigger (spoušť) je vlastně procedura, kterou automaticky volá SŘBD při definované události. Touto událostí může být buď vložení, rušení nebo aktualizace záznamu v tabulce: Trigger je "uložená procedura„ - uvnitř triggeru lze provádět většinu věcí, které umí uložené procedury- například smyčka, podmínka, lokální proměnnou, matematický výpočet a podobně. Spouští se "v souvislosti" s akčním dotazem. To znamená, že se trigger může spustit buď předtím, než je úprava dat provedena, nebo poté, co jsou změny v datech zapsány do databáze. "Akční dotaz" znamená, že trigger lze spustit při vkládání dat, při jejich aktualizaci nebo při odstraňování dat z databáze. Trigger nelze v žádném případě spustit příkazem SELECT. Každý trigger patří právě jedné tabulce. Může existovat tabulka bez triggeru, ale trigger nemůže existovat nezávisle na tabulce. V některých DBMS může být více triggerů stejného typu na jedné tabulce a lze určit pořadí, v němž budou spuštěny.

Databázové triggery Triggery se v tabulkách používají z několika důvodů: Konzistence dat: Trigger může provést výpočet a na základě toho povolit nebo nepovolit změnu dat v databázi. Například trigger může zakázat smazání zákazníka z databáze v případě, kdy má u nás nějaký dluh. Protokolování změn: Trigger může evidovat kdo, kdy a jak měnil data. Lze tak dohledat pracovníka, který zadal špatné údaje nebo zjistit, v kolik hodin došlo k navstupování včerejší uzávěrky. Verzování dat: Díky triggerům lze snadno naprogramovat aplikaci tak, aby jedna tabulka udržovala historii změn tabulky jiné. To lze s úspěchem použít třeba jako bezpečnostní mechanismus. (Databáze tím dost naroste). Zasílání zpráv světu: Trigger může spustit nějaký externí program nebo proces. Například při změně ceny akcií rozešle databáze e- maily obchodníkům.

Databázové triggery Vytvoření triggru CREATE TRIGGER jméno triggeru BEFORE | AFTER DELETE | INSERT | ]> ON jméno tabulky REFERENCING |NEW AS >] [FOR EACH ROW] [WHEN ] BEGIN END;

Databázové triggery  Jméno triggeru musí být pro danou databázi jedinečné.  U každého triggeru musí být uvedeno, před nebo po jaké akci je spuštěn. Možnosti jsou BEFORE INSERT, BEFORE UPDATE, BEFORE DELETE, AFTER INSERT, AFTER UPDATE, AFTER DELETE. V MySQL platí, že pro každou z vyjmenovaných akcí smí existovat nejvýše jeden trigger.  Každý trigger musí souviset právě s jednou tabulkou. Jestliže je tabulka odstraněna, jsou odstraněny i všechny související triggery.  Tělo spouště v MySQL začíná klauzulí FOR EACH ROW a ta značí, že následující akce bude provedena tolikrát, kolik je řádků ovlivněných akčním dotazem.  Triggery mají přístup k měněným datům. Ten je reprezentován virtuálními tabulkami old a new. Jejich význam je ten, že tabulka old obsahuje původní data (ta, která se mají mazat pomocí DELETE nebo ta, která se upravují pomocí UPDATE) a tabulka new obsahuje konečná data (ta, která se vkládají pomocí INSERT nebo ta, která budou v tabulce po provedení UPDATE).  V triggeru lze využít i vestavěných funkcí. Např. funkci vracející současný čas a vracející právě aktivního uživatele.

Databázové triggery SHOW TRIGGERS; triggru DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name; Odstranění triggru SHOW TRIGGERS; Zobrazení triggru DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name; Odstranění triggru

Databázové triggery create table Zaloha like Ucitel; alter table Zaloha add column cas_odstr datetime; alter table Zaloha add column uzivatel varchar (128); Triggery mohou přispívat k bezpečnosti dat - jedním z příkladů může být "bezpečné" mazání řádků v tabulce tzn. záznam není vymazán úplně, ale data jsou přesunuta do jiné tabulky. Př. Máme tabulku Ucitel a chceme místo mazání z této tabulky data přesunout do "záložní" tabulky s tím, že si zároveň poznamenáme, kdo a kdy ta původní data vymazával. Něco takového zcela určitě můžeme svěřit triggeru. Vytvoříme si tabulku, která bude obsahovat data z původní tabulky a ještě údaj o "mazajícím" uživateli a čase, kdy se řádky odstraňovaly:

Databázové triggery create trigger trUlozradky before delete on Ucitel for each row begin insert into Zaloha(id_uc,jmeno,katedra,cas_odstr,uzivatel) values(old.id_uc,old.jmeno,old.katedra,now(),user()); end; Vytvoříme trigger, který při odstraňování dat ta původní data uchová v tabulkce Zaloha: Výsledek spočívá v tom, že když se nyní pokusíte odstranit nějaká data z tabulky Student, tak se smazaná data objeví v tabulkce Zaloha.

Databázové triggery create trigger trMaxStprum before insert on Student for each row begin if new.st_prum>3.0 then /*něco,co akci zruší*/; end if; end; Triggery jako kontrola dat: Bohužel, v MySQL prakticky nemožné vyhodit nějakou smysluplnou chybu z triggeru, a to jejich použití pro kontrolu dat téměř znemožňuje. Doporučuje se pro takový případ "uměle" vytvořit například chybu porušení primárního klíče.