Webové aplikace, bezpečnost webových aplikací. Rozdíly oproti webové stránce: interaktivní řádově vyšší počet HTTP požadavků práce s datovým skladem problémy.

Slides:



Advertisements
Podobné prezentace
Web Michal Žůrek Jak se na něj dívám já..
Advertisements

Připojení k internetu.
Rozšíření systému pro zátěžové testy o SOAP a agenty Zbyněk Pyšný.
Technologie pro publikování na webu 1 Ing. Jiří Štěpánek.
Formuláře jsou důležitou součástí stránek, slouží:  k přihlašování k některým stránkám (eshopy, bakaláři, diskuze na webu apod.)  k odeslání údajů do.
CSS a HTML 5. HTML 5 HTML5 je nová verze specifikace značkovacího jazyka HTML, která přináší podstatné změny v technologiích webových stránek. HTML5 umožňuje.
HTTP server HTTP server 1 Jak to funguje?
Pavel Dvořák Gymnázium Velké Meziříčí Počítačové sítě – služba WWW Registrační číslo projektu: CZ.1.07/1.5.00/ Datum: Jazyk: čeština.
Webové aplikace. Rozdíly oproti webové stránce: interaktivní řádově vyšší počet požadavků práce s datovým skladem problémy se souběhem více uživatelů.
Přednáška č. 5 Proces návrhu databáze
Návrh a tvorba WWW Cvičení 6
PHP – vkládání souborů a html 5
Základy informatiky Internet Ing. Roman Danel, Ph.D. Institut ekonomiky a systémů řízení Hornicko – geologická fakulta.
Tvorba webových aplikací
Moderní formy tvorby webových stránek Martin Šebela, 9.A vedoucí práce: Mgr. Jan Kříž.
Slide 1 A Free sample background from © 2003 By Default! Jiří Kůsa Testování propustnosti síťového firewallu.
Internet, WWW, HTML a spol.. Hlavní zásady inženýrství reprodukovatelnost měřitelnost a parametrizovatelnost přenositelnost typizace a standardizace dokumentace.
Návrh a tvorba WWW Přednáška 1
PHP – Základy programování
Aplikace VT v hospodářské praxi internetové technologie Ing. Roman Danel, Ph.D. VŠB – TU Ostrava.
VÝUKOVÝ MATERIÁL V RÁMCI PROJEKTU OPVK 1.5 PENÍZE STŘEDNÍM ŠKOLÁM ČÍSLO PROJEKTU:CZ.1.07/1.5.00/ NÁZEV PROJEKTU:ROZVOJ VZDĚLANOSTI ČÍSLO ŠABLONY:
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B20 Autor Ing. Jiří Kalousek Období vytvoření Duben 2013.
DIGITÁLNÍ UČEBNÍ MATERIÁL Číslo projektuCZ.1.07/1.5.00/ Název projektuEU peníze středním školám Masarykova OA Jičín Název školyMASARYKOVA OBCHODNÍ.
Celní služby 2000 Radek Sedláček TranSoft a.s Radek Sedláček TranSoft a.s
Maturitní okruh 22: Úvod do HTML. Značkovací a klasické jazyky Klasické: převládá strukturovaný text (programovací kód), skripty jsou prováděny na straně.
Návrh a tvorba WWW Cvičení 7 PHP & Oracle - Bezpečnost.
European Computer Driving Licence Modul 7 – Služby informačních sítí Mendelova zemědělská a lesnická univerzita v Brně.
European Computer Driving Licence Modul 7 – Služby informačních sítí Mendelova zemědělská a lesnická univerzita v Brně.
Dílna Caché II. CSP pro pokročilé Tomáš Vaverka. Zdroje HTML Tag Reference v sekci Reference Material v dokumentaci Caché HTML Tag Reference v sekci Reference.
Cross-Site Request Forgery Prezentace k přednášce o CSRF útocích Připraveno pro SOOM session #
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Internet.  Celosvětový systém propojených počítačů  Funkce  Sdílení dat  Elektronická pošta.
WWW – hypertextový informační systém
PROGRAMOVÁNÍ V PHP PERSONAL HOME PAGES SESSIONS. 2 COOKIES JEDNÁ SE O KRÁTKÉ TEXTOVÉ ŘETĚZCE, JEŽ SI MEZI SEBOU VYMĚŇUJÍ WEBOVÝ SERVER A WEBOVÝ KLIENT.
GIS??? Ve státní správě Karel Charvát. GIS?????? Je správné používat v souvislosti s využíváním prostorových informací ve státní správě, ale i v komerčním.
AJAX nejmodernější webová technologie… seminář pro učitele ZŠ a SŠ Mgr. Marek Osuchowski Ostravská univerzita © 2011.
Copyright (C) 2000 Vema, a. s.1 V3 klient Michal Máčel Provozní integrace G2, HR/Win a internetu.
WWW stránky – Úvod Mgr. Lenka Švancarová.
Elektronický registr oznámení Zpracoval(a): Mgr. František Rudecký
TNPW1 Technologie pro publikování na webu Cvičení č. 2 Překlad URL na fyzickou adresu stránky Editor Macromedia Homesite „Hello world“ v XHTML (úvod do.
2 Petr Žitný znalosti.vema.cz 3 Báze znalostí Nová služba zákazníkům ▸Báze naplněná informacemi, ke které mají uživatelé přímý přístup Základní cíl ▸Poskytovat.
Jednotná informační brána Cyklus školení Elektronické informační zdroje a databáze Národní knihovna ČR , , , ,
Technické řešení Mapových služeb Portálu veřejné správy Jiří Kvapil.
IBM Global Services Ing. Stanislav Bíža, Senior IT Architect, CISA © 2005 IBM Corporation Rizika napadení webových aplikací Konference ISSS 2005 Title.
Úvod do PHP IZI 228.
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.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B10 Autor Ing. Jiří Kalousek Období vytvoření prosinec.
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í.
Vzdálená správa Tomáš Kalný.
INTERNET.
Blíží se datové schránky,. aneb „Nepropadejte panice!“
Internetové technologie Informatika pro ekonomy přednáška 7.
PHP Programy pro tvorbu WWW stránek - 01
Pokročilá ochrana informací Ladislav Šolc, Tomáš Kutěj Systems Engineers Microsoft, s.r.o.
Uživatel počítačové sítě
1. 2 Zabezpečená mobilní komunikace 3 Private Circle chrání Vaši komunikaci před odposlechem či narušením. Jedná se o komplexní řešení pro zabezpečení.
E- MAIL Ing. Jiří Šilhán. E LEKTRONICKÁ POŠTA NEBOLI vývoj od počátku sítí – původní návrh pouze pro přenos krátkých textových zpráv (ASCII) základní.
Jak fungují webové stránky Úvod do HTML (1). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická.
Internet. je celosvětový systém navzájem propojených počítačových sítí („síť sítí“), ve kterých mezi sebou počítače komunikují pomocí rodiny protokolů.
 = jedná se o vzájemné propojení lokálních počítačových sítí pomocí vysokorychlostních datových spojů  vznikl spojením mnoha menších sítí  v každé.
Internet (služby Internetu, WWW) Služby Internetu WWW (World Wide Web) – dnes nejrozšířenější služba; spoustě lidí splývá s Internetem jako takovým WWW.
Zabezpečení – CSRF, XSS Tomáš Hulák, Miroslav Kořínek.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o, Orlová Lutyně AUTOR: Bc. Petr Poledník NÁZEV: Podpora výuky v technických oborech TEMA: Počítačové systémy ČÍSLO.
Internet – pojmy, služby
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o, Orlová Lutyně
Vytvoření IS pro správu místností v prostředí WWW
Zabezpečení www stránek
iMUNIS Portálové řešení pro obce
Web Application Scanning
Elektronický (digitální) podpis
Transkript prezentace:

Webové aplikace, bezpečnost webových aplikací

Rozdíly oproti webové stránce: interaktivní řádově vyšší počet HTTP požadavků práce s datovým skladem problémy se souběhem více uživatelů Webová aplikace se skládá z webových stránek Webová aplikace je serverová aplikace zahltit server není problém zahltit server znamená odříznutí všech uživatelů

Rozdíly oproti lokální (nesíťové) aplikaci vzdálený přístup problémy se souběhem více uživatelů potíže s uchováváním stavu závislost na webových prohlížečích vysoká dostupnost levnější údržba aplikace

Nastavení dat v HTTP hlavičkách: nastavení ukládání do cache (mezipaměti) Nastavení informací pro vyhledávače a prohlížeče: klíčová slova (keywords) autor (author) popis (description) Při nastavování těchto metadat je nutné brát v úvahu, že vyhledávače se brání ovlivňování výsledků. pro webové aplikace není příliš významné

rychlost závisí na neovlivnitelných okolnostech fyzikální omezení přenosu compuware.com mendelu.cz

Cache = mezipaměť Při prvním požadavku na webovou stránku je nutné načíst všechny externí soubory. obrázky, styly, skripty (klientské) Při dalším požadavku na stránku není nutné stahovat soubory znovu – pravděpodobně se nezměnily. Cache je dočasná paměť pro uložení webových stránek. dramatické zvýšení rychlosti načítání pevný disk nebo RAM Existuje také sdílená cache – velké organizace, někteří poskytovatelé internetu

Systém pro definovaní doby uchovávání stránky (lifetime, time-to-live, ttl) v cache prohlížeče. Příklad – první načtení stránky: 55 požadavků ( B z toho B stránka) Druhý požadavek na stránku: 9 požadavků (2175 B) Obnovení stránky: 54 požadavků sec14.html sec14.html

Hlavička Cache-control – příklady: Cache-control: public, max-age= Cache-control: private, max-age=3600, must- revalidate Cache-control: private, no-cache, no-store, must- revalidate Koncept 1 soukromý vs. veřejný obsah (public × private × no- cache × no-store) rozhoduje zda uložit nebo neuložit

Koncept 2 – vypršení (expiration) doba platnosti [s]: max-age=3600 povinné ověření: must-revalidate Koncept 3 – ověření platnosti Pokud klient požaduje zaručeně čerstvou stránku může odeslat hlavičku (CTRL + F5): Pragma: no-cache Server musí buď odpovědět platnou stránkou nebo klienta přesvědčit, že jeho verze je platná (HTTP status 304).

Podle data poslední změny Server může odeslat hlavičku udávající poslední změnu souboru: Last-Modified: Wed, 13 Oct :43:02 GMT Klient může ověřit zda došlo ke změně posláním hlavičky: If-Modified-Since: Wed, 13 Oct :43:02 GMT Podle obsahu Server může odeslat kód, který se změní při změně obsahu: ETag: "3fe48-527f-52237c0" Klient může ověřit zda došlo ke změně posláním hlavičky: If-None-Match: "38cac-1f bcc0"

Minimalizace objemu přenášených dat mezi serverem a klientem Ověření platnosti = přenos přibližně 500B Pro statický obsah je zajištěno automaticky (posílá se Last- modified) Pro dynamický obsah nutno řešit při generování stránky (ETag) zejména pro skripty, které vracejí obrázky a velké soubory U dynamicky generovaných stránek je vhodné zajistit, aby se generovaly jen pokud je to nutné. snížení zátěže serveru

přihlášení, stav formuláře, aktuální stránka… protokol HTTP je nestavový Z pohledu serveru není mezi jednotlivými požadavky klientů žádná spojitost. Jedna akce uživatele odpovídá mnoha HTTP požadavkům. Požadavky jednotlivých klientů se na serveru prolínají. Udržování stavu webové aplikace je možné několika způsoby. všechny jsou špatné a některé ještě horší…

POST HTTP/1.1 Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x- shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;.NET CLR ;.NET CLR ;.NET CLR ;.NET CLR ) Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Host: example.com Content-Length: 131 Connection: Keep-Alive Cache-Control: no-cache Accept-Language: cs loggedURL=http%3A%2F%2Fexample.com%2Fticket&serviceId= &forceSSL= 0&username=mrkvicka&domain=example.com&password=cibulka&js=1

Map of the internet (2006) o většina PC nemá statickou IP adresu o většinu PC používá více jak jeden uživatel o na většině PC je spuštěn více jak jeden program

GET je základní HTTP požadavek Udržování stavu metodou GET znamená vkládání parametrů do URL. Není nijak zabezpečeno, adresu je možné podstrčit Pouze malý objem textových dat (2 048B), bez speciálních znaků (funkce urlencode() ) K předávání dochází pouze při kliknutí na odkaz nebo odeslání formuláře. Uživatel může libovolně měnit N

POST je jiný způsob odeslání HTTP požadavku, při kterém klient odesílá (post) serveru data. POST požadavek vzniká pouze při odeslání formuláře (method='post') nebo JavaScriptem. Není nijak zabezpečeno. Data jsou ve zdrojovém kódu HTML stránky. Pouze textová data bez speciálních znaků (urlencode()) Je mírně odolnější proti podstrčení a proti změně ze strany uživatele. Není univerzální, musí se explicitně zopakovat při každém požadavku.

Data pro udržení stavu se ukládají v prohlížeči nespolehlivé uživatel může libovolně mazat a měnit nebezpečné není šifrováno přístupné komukoliv Nastavuje se vypršení cookie souboru po zavření prohlížeče (dočasný cookie v RAM) doba platnosti (tj. platné i po zavření prohlížeče, trvalý cookie na HDD) Do cookie se dají ukládat jen textová data (max. 4096B na doménu), přenáší se při každém požadavku automaticky.

Internet Explorer %USERPROFILE%\AppData\Local\Microsoft\Windows\INetCookies Firefox %USERPROFILE%\AppData\Roaming\Mozilla\Firefox\ Profiles\2wm3nnty.default\cookies.sqlite Chrome %USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\Cookies Příklad obsahu ( PREF ID=e0e8437d79da2a4e:LD=en:NR=30:TM= :LM= :S=I1OK7fza FXPVH5SQ google.cz/ *

Data pro uchování stavu se ukládají na serveru. Vzniká problém důvěryhodné identifikace klienta Automatická správa session: při prvním požadavku server generuje identifikační kód session vytvoří prostor pro data identifikační kód zašle klientovi klient uloží kód do dočasného cookie souboru s každým požadavkem zašle klient serveru kód session

Umožňuje ukládání větších objemů dat i netextových dat. Data jsou uložena na serveru a přístupná pouze webovému serveru. Přenáší se pouze identifikační kód (SESSION ID). Slabým místem je identifikační kód identifikační kód je možno zcizit nebo podstrčit (session fixation) po zapomenutí kódu (zavření prohlížeče) je session nepřístupná Nejpoužívanější způsob ukládání stavu webových aplikací.

viz příloha sion-soubory.pdf sion-soubory.pdf sion-databaze.pdf sion-databaze.pdf Uchování stavu je nutná podmínka k realizaci zabezpečení

Problém 1: uživatel dlouho nic Problém 2: uchování stavu přihlášení, zabránění zcizení stavu Problém 3: kontrola uživatelských vstupů Problém 4: zabezpečení jména a hesla

Jméno kočičky není dobré heslo tedy pokud se kočička nejmenuje XdTg42W Jakékoliv heslo složené ze slov je slabé Jakékoliv heslo napsané na nástěnce je slabé Čím častěji je heslo použité tím je slabší Pro každou aplikaci musí být jiné heslo → KeePassKeePass Pro srovnání: slušný jazyk = slov 8 míst = kombinací 10 míst = kombinací

autentizace – authentication – ověření identity uživatele autorizace - authorization – ověření oprávnění uživatele autentification – zkomolenina authentication 4 způsoby ověření identity uživatele: co víte (heslo) co máte (klíč, certifikát – velmi dobré) kdo jste (otisk prstu, duhovka – nepřesné) co děláte (hlasu, rukopisu – napodobitelné) 2F (two-factor) ověřování

Heslo je možné zadat do HTML formuláře Odesílá se nešifrované (plaintext) v POST požadavku. Odposlechnutí hesla je jednoduché. Podstrčení formuláře je jednoduché. Pro přihlášení je možné využít přihlášení protokolu HTTP Odposlechnutí hesla je složitější

Při přihlášení přes webový formulář se posílá heslo jednorázově (při odeslání formuláře) po ověření hesla musí server uchovávat stav přihlášení problém identifikace klienta různé metody verifikace kontrolní kódy, časově omezené kódy není spolehlivé

Při přihlášení pomocí HTTP se heslo odesílá při každém požadavku je možné uchovávat stav přihlášení nebo je možné ověřovat jméno a heslo při každém požadavku heslo je mnohočetným přenosem oslabováno je nutné kombinovat s šifrováním umožňuje ukládání Session do databáze odpadá problém identifikace klienta 2. nejbezpečnější způsob 1F přihlašování (hned po přihlášení osobním certifikátem)

Šifrovaný přenos je možný pomocí protokolu HTTPS Funguje jako obálka protokolu HTTP. Při šifrovaném přenosu zbývá zabránit podstrčení stránky K ověření pravosti stránky slouží certifikáty certifikát musí být platný certifikát musí být vydán pro aktuální server certifikát musí být ověřen certifikační autoritou certifikační autorita musí být pravá

Cílem certifikátu je ověřit pravost subjektu Každý certifikát musí ověřit certifikační autorita. Existují i self-signed certifikáty pro testovací účely

Pokud se přidá salt, pak prakticky stačí použít jednosměrný kódovací algoritmus (např. SHA256) dekódování je natolik náročné, že se útočník raději zaměří na jinou část aplikace Bezpečnější je použít (jednosměrný) šifrovací algoritmus (PHP crypt, generate_password()). Pokud je to možné, je třeba vyhnout se uchování/generování klíče (obousměrné šifrování). Hesla by měla být uložena v DB s vhodně nastavenými oprávněními.

Ošetření speciálních znaků při vkládání dat do databáze (PS, pg_escape_string()) SQL injection uvozovky, znak #0 a další podle DB serveru případně i další Ošetření speciálních znaků při zobrazování stránky na webu (html_special_chars()) Cross site scripting (XSS) HTML značky Skripty na straně klienta

alert(‘no nazdar'); Vzhledem k tomu, že escapování je nutné u každého řetězce – mají PHP funkce k tomu určené velmi krátké názvy: mysql_real_escape_string(htmlspecialchars($strin g, ENT_QUOTES, 'UTF-8')); nejjednodušší je ukládat data escapovaná, ale způsobuje to problémy při dalším vývoji aplikace nejsprávnější je escapovat data při zobrazení – použít šablonový systém

je závislé na kontextu ve kterém se data zobrazují buď se musí escapovat při zobrazení nebo při uložení a pak dost složitě konvertovat

Aby byl šifrovaný přenos bezpečný, musí být platné důvěryhodné certifikáty. Heslo musí být silné, jinak se dá uhádnout a žádné zabezpečení nepomůže. Uživatel musí být ostražitý. 2F zabezpečení je úplně někde jinde než 1F zabezpečení. 2F zabezpečení není zadaní dvou hesel! Escapovat (chránit se proti SQL injection a XSS) použít šablony a připravené dotazy Top_10 Top_10

Lze SQL injection útoku zabránit tak, že se z textu odstraní klíčová slova jazyka SQL? Vyžaduje uchování stavu pomocí session cookie soubory? Lze odeslat HTML formulář metodou GET? Kdo musí ověřit certifikát, aby byl důvěryhodný? Lze uchovávat session data v databázi? Kolik HTTP požadavků mezi jedním klientem a jedním serverem může být zpracováváno současně/paralelně? Lze z prohlížeče odeslat POST požadavek i bez použití formuláře? Hrozí XSS útok i pokud aplikace negeneruje žádné HTML stránky? Je možné aplikovat man-in-the-middle útok i pokud oběť používá HTTPS?