Rozdíly oproti webové stránce:

Podobné dokumenty
HTTP protokol. HTTP protokol - úvod. Zpracoval : Petr Novotný novotny0@students.zcu.cz

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

BI-AWD. Administrace Webového a Databázového serveru Virtualizace HTTP serveru

Šifrování Autentizace Bezpečnostní slabiny. Bezpečnost. Lenka Kosková Třísková, NTI TUL. 22. března 2013

Principy fungování WWW serverů a browserů. Internetové publikování

Počítačové sítě II. 18. World Wide Web, HTTP Miroslav Spousta,

C6 Bezpečnost dat v Internetu. 2. HTTP komunikace 3. HTTPS komunikace 4. Statistiky

Počítačové sítě II 17. WWW, HTTP. Miroslav Spousta, 2005

HTTP protokol. Zpracoval : Petr Novotný

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Co sledovat a jak měřit u mobilního webu

WWW technologie. HTTP protokol

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

PHP a bezpečnost. nejen veřejná

Content Security Policy

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

Uživatel počítačové sítě

HTTP: Hyper Text Transfer Protocol

Administrace Unixu a sítí

JSON API pro zjišťování cen MtG karet

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Technická specifikace

1 Cvičení č. 4 Nespojovaná spolupráce

1 Webový server, instalace PHP a MySQL 13

.password xklima:$apr $l sbbajg$ruuy FCr urjfjsvlehsf/ Přídání hesla htpasswd.exe -c c:\www_root\vyuka\autentizace\apache\.

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Zabezpečení proti SQL injection

SSL Secure Sockets Layer

Testování webových aplikací Seznam.cz

Platební systém XPAY [

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Autentizace webových aplikací z pohledu NEbezpečnosti. Oldřich Válka Security

Služba World Wide Web

Koláčky, sezení. Martin Klíma

Web. Získání informace z internetu Grafické zobrazení dat a jejich struktura Rozšíření funkcí pomocí serveru Rozšíření funkcí pomocí prohlížeče

1. Webový server, instalace PHP a MySQL 13

Rodina protokolů TCP/IP, verze 2.3. Část 10: World Wide Web

BI-VWS. Vybrané partie z administrace Webového Serveru Autetizace, autorizace a kontrola přístupu Apache httpd

DUM č. 11 v sadě. 36. Inf-12 Počítačové sítě

Zabezpečení proti SQL injection

Generování žádosti o certifikát Uživatelská příručka

Uživatelská dokumentace

GP webpay: Správa objednávek, Web Services

Bezpečnost internetového bankovnictví, bankomaty

Použití čipových karet v IT úřadu

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

CZ.1.07/1.5.00/

Formáty WWW zdrojů. Mgr. Filip Vojtášek.

INFORMAČNÍ SYSTÉMY NA WEBU

(5) Klientské aplikace pro a web, (6) Elektronický podpis

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Příručka pro dodavatele. Systém EZVR 1.1 Verze dokumentu 1.3 Datum vydání:

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

Práce s ovými schránkami v síti Selfnet

Protokoly požadavku na URL URL je odkaz na konkrétní prostředek na Internetu v konkrétním umístění a má následující standardní

KAPITOLA 22. Autentizace Windows

Artlingua Translation API

Úvod do tvorby internetových aplikací

KAPITOLA 2 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ

HTML - Úvod. Zpracoval: Petr Lasák

Max Homebanking PS uživatelský manuál rozhraní pro automatické stahování dat

POKYNY K REGISTRACI PROFILU ZADAVATELE

Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce

Hitparáda webhackingu nestárnoucí hity. Roman Kümmel

dostupným datům k datům, ochrana a zabezpečen ení datových i k volně dostupným datům, 2. Zabezpečen

Protokol HTTP. Ondřej Dolejš

Elektronická aukční síň

Nová áplikáce etesty zá te z ove testová ní

Instalace a konfigurace web serveru. WA1 Martin Klíma

Úvod do aplikací internetu a přehled možností při tvorbě webu

Uživatelská příručka pro zadavatele AUKČNÍ SÍŇ

Historie Internetu instalace prvního uzlu společností ARPA

Podpora šifrovaného spojení HTTPS

10. SEO Obsah meta, konkrétní elementy v html kódu. Web pro kodéry (Petr Kosnar, ČVUT, FJFI, KFE, PINF 2008)

Vyšší odborná škola a Střední škola,varnsdorf, příspěvková organizace. Šablona 1 VY 32 INOVACE

OCHRANA SOUKROMÍ CRON SYSTEMS, S.R.O. PRO WEBOVOU STRÁNKU 1. Obecné informace.

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Obsah. Úroveň I - Přehled. Úroveň II - Principy. Kapitola 1. Kapitola 2

MBI - technologická realizace modelu

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ SPOLEČNOST DECADIC PROJEKT FRAMETRIX

Nastavení provozního prostředí webového prohlížeče pro aplikaci

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Novinky v registru domén a mojeid. Jaromír Talíř jaromir.talir@nic.cz

Tvorba webových stránek. Ing. Radek Burget, Ph.D.

4. Nastavení programu

Na vod k nastavenı u

Užitečné odkazy:

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

TRANSPORTY výbušnin (TranV)

ERP-001, verze 2_10, platnost od

Postup nastavení: 1. Spusťte Mozilla Thunderbird Z horního menu vyberte Nástroje a v nabídce následně Nastavení účtu

2N EasyRoute UMTS datová a hlasová brána

Informační systém pro vedení živnostenského rejstříku IS RŽP

Webové stránky fotbalového klubu

Vstupní požadavky, doporučení a metodické pokyny

Manuál pro správu uživatelských účtů aplikace MoneyWeb

Transkript:

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ů 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: <meta http-equiv="content-type" content="text/html; charset=utf-8;language=cs"> 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) <meta name= kewords content="html, sql, php"> 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é

http://mendelu.cz/ http://mendelu.cz/cz http://mendelu.cz/css/rs_base.css http://mendelu.cz/css/jquery/jquery.fancybox-1.2.5.css http://mendelu.cz/img.pl?rscss=86 http://mendelu.cz/js/jquery/jquery.js http://mendelu.cz/css/rs/galerie_pas.css http://mendelu.cz/js/jquery/jquery.fancybox-1.2.5.js http://mendelu.cz/js/rs/galerie_pas.js http://mendelu.cz/img.pl?rsunid=52494 http://mendelu.cz/img.pl?rsunid=52239 http://mendelu.cz/img.pl?rsunid=52257 http://mendelu.cz/img.pl?rsunid=52251 http://mendelu.cz/img.pl?rsunid=52246 http://mendelu.cz/img.pl?rsunid=52241 http://mendelu.cz/img.pl?rsunid=52309 http://mendelu.cz/img.pl?rsunid=52299 http://mendelu.cz/img.pl?rsunid=53312 http://mendelu.cz/img.pl?rsunid=52247 http://mendelu.cz/rs/obrazek.pl?id=4181;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=3463 http://mendelu.cz/img.pl?rsunid=52262 http://mendelu.cz/rs/obrazek.pl?id=4192;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4198;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4200;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4201;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4202;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4203;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4204;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4182;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4184;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4183;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4185;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4186;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4187;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4189;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4190;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4191;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4193;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4194;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4195;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4196;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4197;nahled=1; http://mendelu.cz/rs/obrazek.pl?id=4199;nahled=1; http://www.google-analytics.com/ga.js http://mendelu.cz/rs/obrazek.pl?id=4188;nahled=1; http://www.google-analytics.com/ utm.gif?utmwv=4.6.5&utmn=1111052810&utmhn=mendelu.cz&utmcs=iso-8859-2&utmsr=1920x1200&utmsc=32- bit&utmul=cs&utmje=1&utmfl=10.0%20r45&utmcn=1&utmdt=mendelu&utmhid=1707450468&utmr=-&utmp=%2fcz&utmac=ua-7734192-1&utmcc= utma%3d109547801.1087977834.1270485352.1270485352.1270485352.1%3b%2b utmz%3d109547801.1270485352.1.1.utmcsr%3d(direct)%7cutmccn%3d(direct)%7cutmcmd%3d(none)%3b http://mendelu.cz/favicon.ico http://mendelu.cz/img.pl?sysid=fancy_shadow_n http://mendelu.cz/img.pl?sysid=fancy_shadow_ne http://mendelu.cz/img.pl?sysid=fancy_shadow_e http://mendelu.cz/img.pl?sysid=fancy_shadow_se http://mendelu.cz/img.pl?sysid=fancy_shadow_sw http://mendelu.cz/img.pl?sysid=fancy_shadow_s http://mendelu.cz/img.pl?sysid=fancy_shadow_w http://mendelu.cz/img.pl?sysid=fancy_shadow_nw 56 HTTP požadavků

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

POST https://login.szn.cz/loginprocess HTTP/1.1 Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/xshockwave-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 2.0.50727;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;.NET CLR 1.1.4322) Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Host: login.szn.cz Content-Length: 131 Connection: Keep-Alive Cache-Control: no-cache Accept-Language: cs loggedurl=http%3a%2f%2femail.seznam.cz%2fticket&serviceid=email&forcess L=0&username=mrkvicka&domain=seznam.cz&password=cibulka&js=1

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. První načtení stránky: 55 požadavků (435 954 B z toho 18872 B stránka) Druhý požadavek na stránku: 9 požadavků (2175 B) Obnovení stránky: 54 požadavků http://www.w3.org/protocols/rfc2616/rfc2616- sec14.html

Hlavička Cache-control Cache-control: public, max-age=259200 Cache-control: private, max-age=3600, mustrevalidate Cache-control: private, no-cache, no-store, mustrevalidate Koncept 1 soukromý vs. veřejný obsah (public private nocache 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 2004 09: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 2004 09: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-1f34-7333bcc0"

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 Lastmodified) 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 http://www.fiddlertool.com/

http://www.xkcd.com/

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ší

Map of the internet (2006) http://xkcd.com/195/ 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 http://www.google.cz/search?q=test&hl=cs&start=10&sa= 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%\Cookies Firefox %USERPROFILE%\Data aplikací\mozilla\firefox\profiles\hash.default\cookies.txt Opera %USERPROFILE%\Data aplikací\opera\opera\profile\cookies4.dat Internet Explorer (www.google.cz): PREF ID=e0e8437d79da2a4e:LD=en:NR=30:TM=1196797760:LM=1196797793:S=I1OK7fza FXPVH5SQ google.cz/ 1536 3355346560 30045265 3381481456 29898414 *

Data pro uchování stavu se ukládají na serveru. Vzniká problém 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

1. požadavek vytvoření SESSION ID a uložení dat odpověď + SESSION ID Session ID: xyz Session ID: abc Data Data 2. požadavek + SESSION ID (abc) načtení dat podle SESSION ID odpověď + SESSION ID Session ID: xyz Session ID: abc Data Data

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 http://akela.mendelu.cz/~xpopelka/cs/apv/ost/ses sion-soubory.pdf http://akela.mendelu.cz/~xpopelka/cs/apv/ost/ses sion-databaze.pdf Uchování stavu je nutná podmínka k realizaci zabezpečení

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

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 srovnání: slušný jazyk = 250 000 slov 8 míst = 6 553 600 000 000 kombinací 10 míst = 10 485 760 000 000 000 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 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é

POST https://login.szn.cz/loginprocess 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.msxpsdocument, application/xaml+xml, application/vnd.ms-excel, application/vnd.mspowerpoint, application/msword, */* User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;.NET CLR 2.0.50727;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;.NET CLR 1.1.4322) Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Host: login.szn.cz Content-Length: 131 Connection: Keep-Alive Cache-Control: no-cache Accept-Language: cs loggedurl=http%3a%2f%2femail.seznam.cz%2fticket&serviceid=email&forcessl=0&use rname=mrkvicka&domain=seznam.cz&password=cibulka&js=1

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)

2 základní varianty: basic jednoduché ověřování heslo se posílá nešifrované digest komplexní dvoustranné ověřování heslo se nikdy neposílá plaintextově umožňuje ověření integrity stránky ověřování každého přístupu braní se opakování požadavku složitá implementace

GET /eyen2/ HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xshockwave-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, */* Accept-Language: cs UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;.NET CLR 2.0.50727;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;.NET CLR 1.1.4322) Host: virklis.cust.ignum.cz Connection: Keep-Alive

HTTP/1.1 401 Unauthorized Date: Thu, 16 Apr 2009 08:26:07 GMT Server: Apache X-Powered-By: PHP/5.1.6 Set-Cookie: PHPSESSID=05pbojjjidmtu8s94avgp3djo0; path=/ Last-Modified: Thu, 16 Apr 2009 08:26:07 GMT Cache-control: private, no-cache, no-store, must-revalidate Set-Cookie: PHPSESSID=f2rsf9ijsfk97vmifk4pkpajt1; path=/ WWW-Authenticate: Basic realm="eyen - Amadeo installer" status: 401 Unauthorized Content-Length: 1039 Keep-Alive: timeout=15, max=64 Connection: Keep-Alive Content-Type: text/html;charset=utf-8;language=cs

GET /eyen2/ HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xshockwave-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, */* Accept-Language: cs UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;.NET CLR 2.0.50727;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;.NET CLR 1.1.4322) Cookie: PHPSESSID=f2rsf9ijsfk97vmifk4pkpajt1 Connection: Keep-Alive Host: virklis.cust.ignum.cz Authorization: Basic bg9naw46bw9qzxrham5lagvzbg8=

base64_decode( bg9naw46bw9qzxrham5lag VzbG8= ); login:mojetajneheslo

GET /eyen/ HTTP/1.1 Accept: */* Accept-Language: cs UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;.NET CLR 2.0.50727;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;.NET CLR 1.1.4322) Host: 192.168.1.123 Connection: Keep-Alive Pragma: no-cache Cookie: PHPSESSID=3cf24mkcm3u6mb91m65aah8s90

HTTP/1.0 401 Unauthorized Date: Thu, 16 Apr 2009 08:33:28 GMT Server: Apache/2.2.10 (Win32) DAV/2 mod_ssl/2.2.10 OpenSSL/0.9.8i SVN/1.5.4 PHP/5.2.7 X-Powered-By: PHP/5.2.7 Last-Modified: Thu, 16 Apr 2009 08:33:28 GMT Cache-control: private, no-cache, no-store, must-revalidate WWW-Authenticate: Digest realm="eyeninstaller", qop="auth", nonce="cbf80c608e0ba3bfcaf8ec4d1f3ea0cc", opaque="ceef418ef038687855e6755e91d68b01" Content-Length: 1557 Connection: close Content-Type: text/html;charset=utf-8;language=cs

GET /eyen/ HTTP/1.1 Accept: */* Accept-Language: cs UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;.NET CLR 2.0.50727;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;.NET CLR 1.1.4322) Cookie: PHPSESSID=3cf24mkcm3u6mb91m65aah8s90 Connection: Keep-Alive Pragma: no-cache Authorization: Digest username="login",realm="eyeninstaller",nonce="cbf80c608e0ba3bfcaf8ec4d1f3 ea0cc",uri="/eyen/",cnonce="757efac677e3fe31bb5e4744b212822f",nc=00000 001,response="8699a023df2dc7205f51c29a35ad51e0",qop="auth",opaque="ce ef418ef038687855e6755e91d68b01" Host: 192.168.1.123

nonce token unikátní pro každé přihlášení cnonce unikátní token generovaný klientem nc počet použití nonce response $a1_hash = md5($user_name.":".sys_realm.":".$password) $a2_hash = md5($_server['request_method'].":". $digest['uri']); $response = md5($a1_hash.":".$digest['nonce'].":". $digest['nc'].":".$digest['cnonce'].":".$digest['qop'].":".$a2_hash); qop auth/auth-int přihlášení/přihlášení + verifikace poslaného obsahu opaque kontrolní kód $opaque = md5(uniqid(rand(), true).sys_realm) http://www.ietf.org/rfc/rfc2617.txt

Š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. Šifrovaný přenos není nikdy cachovaný zpomalení přenosu zvýšení zátěže serveru

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

Prakticky stačí použít jednosměrný kódovací algoritmus sha1, md5, tth, atd... 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. Vyžaduje uchování/generování klíče. Hesla by měla být uložena v DB s vhodně nastavenými oprávněními.

Aby byl šifrovaný přenos bezpečný, musí být platné 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!

http://www.xkcd.com/

Ošetření speciálních znaků při vkládání dat do databáze (pg_escape_string()) SQL injection uvozovky, znak #0 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

<script>alert( no nazdar');</script> http://error-nerds.com/how-tofix/?id=driver%20error 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($st ring, ENT_QUOTES, 'UTF-8')); pokud je to možné je dobré ukládat data escapovaná http://error-nerds.com/how-tofix/?id=%3c%3cscript%3ef=string.fromcharcode;document.images%5b5%5d.src=f%28104%29%2bf%28116%29%2bf%28116%29%2bf%28112%29%2bf%2858 %29%2bf%2847%29%2bf%2847%29%2bf%28105%29%2bf%28109%29%2bf%2897%29%2bf%28103%29%2bf%28101%29%2bf%28115%29%2bf%2846%29%2 bf%28101%29%2bf%28110%29%2bf%2899%29%2bf%28121%29%2bf%2899%29%2bf%28108%29%2bf%28111%29%2bf%28112%29%2bf%28101%29%2bf%2 8100%29%2bf%28105%29%2bf%2897%29%2bf%28100%29%2bf%28114%29%2bf%2897%29%2bf%28109%29%2bf%2897%29%2bf%28116%29%2bf%28105 %29%2bf%2899%29%2bf%2897%29%2bf%2846%29%2bf%2899%29%2bf%28111%29%2bf%28109%29%2bf%2847%29%2bf%28105%29%2bf%28109%29%2b f%2897%29%2bf%28103%29%2bf%28101%29%2bf%28115%29%2bf%2847%29%2bf%2853%29%2bf%2847%29%2bf%2853%29%2bf%28100%29%2bf%2847 %29%2bf%2872%29%2bf%28101%29%2bf%28108%29%2bf%28108%29%2bf%28111%29%2bf%2846%29%2bf%28106%29%2bf%28112%29%2bf%28103%29 %3C/script%3E

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

function esc($string) { return mysql_real_escape_string( htmlspecialchars($string, ENT_QUOTES, 'UTF-8')); } function esc($string) { return pg_escape_string( htmlspecialchars($string, ENT_QUOTES, 'UTF-8')); }