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

Podobné dokumenty
MANUÁL K PROGRAMU JEDNODUCHÝ SKLAD (VER-1.2)

M4 PDF rozšíření. Modul pro PrestaShop.

Dobrý SHOP Popis produktu a jeho rozšíření

Příloha č. 1 Verze IS esyco business

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

Redakční systém Joomla. Prokop Zelený

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze Kontakty 08/ Obsah

Dobrý FOTO Popis produktu a jeho rozšíření

Dobrý CMS Popis produktu a jeho rozšíření

Informační systém pro e-learning manuál

Práce s administračním systémem internetových stránek Podaných rukou

Jak importovat šablony tiskových sestav do aplikace MarkTime PORTAL. Administrační manuál Bellman Group, s.r.o. 2007/09/23 verze 1.

Modul Kontakt s klientem SSP. OKcentrum. Uživatelská příručka. Poskytování součinnosti ÚP ČR

WNC::WebNucleatCreator

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Systém JSR představuje kompletní řešení pro webové stránky malého a středního rozsahu.

UNIVERZITA PARDUBICE

Databázové a informační systémy Informační systém prodejny nábytku. Jakub Kamrla, KAM087

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

Novinky verze systému Spisové služby (SpS) e-spis LITE

Sklady. Níže popsaný návod je určen pro uživatele s rolí Administrátor nebo Správce skladu. Přehled funkcí 2. Postup pro vytvoření nového skladu 2

4. Patch Zdokonalení:

Portál Značení tabáku Uživatelská příručka pro registrované uživatele

DUM 15 téma: Příkazy pro řízení přístupu

Elektronické zpracování dotazníků AGEL. Verze

Manuál k systému RS4S. verze 1.2

Administrace Oracle. Práva a role, audit

Reliance 3 design OBSAH

Popis produktu IDFU. Řešení součinnosti s oprávněnými osobami verze 2. Aegis s.r.o.

Použití databází na Webu

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

PHOTO-ON Profesionální on-line správa fotografií

Microsoft. Access. Nová databáze, návrh tabulky. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie

DOCHÁZKA. Webový prohlížeč docházky. Osoby

Administrační rozhraní Drupalu

Obrázek 1: Struktura programu z hlediska zapojení

FFUK Uživatelský manuál pro administraci webu Obsah

Olga Rudikova 2. ročník APIN

8.2 Používání a tvorba databází

UŽIVATELSKÁ PŘÍRUČKA K INTERNETOVÉ VERZI REGISTRU SČÍTACÍCH OBVODŮ A BUDOV (irso 4.x) VERZE 1.0

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Systém elektronického rádce v životních situacích portálu

Uživatelská příručka

Nástrojová lišta v editačním poli

Athena Uživatelská dokumentace v

Návrh uživatelských rozhraní NOV-WEB. Jakub Bartoš, Pavel Dvořák, Jakub Motyčka, Kamil Procházka

Audit DB. Referát. Vypracoval: Zdeněk Doležal MFF UK Praha 11/5/06

MOBILNÍ SKLADNÍK. Příručka k základnímu ovládání. Beta verze popisu produktu Aktualizace dokumentu: z 10

Stručný úvod pro programátory. Michal Kuchta

1 Webový server, instalace PHP a MySQL 13

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MS Access generování složitějších sestav Ing. Kotásek Jaroslav

PHP a bezpečnost. nejen veřejná

Informační systém ozdravných pobytů zdravotní pojišťovny

Provozní dokumentace. Seznam orgánů veřejné moci. Přihlášení do Agendového informačního systému Registru práv a povinností

Administrační rozhraní Manuál pro klienty

Rezervační systém Tvorba WWW stránek

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

Popis. Manuál Klávesové zkratky a příkazy - 1 -

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

(X)HTML, CSS a jquery

Příručka pro editaci kontaktů na eagri

Propojení Spectu - POSlavu

MBI - technologická realizace modelu

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

HLÁŠENÍ DODÁVEK LÉČIVÝCH PŘÍPRAVKŮ UVEDENÝCH NA TRH V ČR DRŽITELI ROZHODNUTÍ O REGISTRACI LP - REG13

Př ihlaš ova ní do IS etešty př eš JIP

Uživatelská příručka IS KP14+ pro Integrované nástroje: Žádost o podporu Strategie CLLD

Funkcionalita sledování a kontrolování limitů CPV

Vstup do Infocentra - po přihlášení do internetového obchodu Vaším ID, uţivatelským jménem a heslem klikněte na Infocentrum - osobní nastavení.

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Agentura ochrany přírody a krajiny ČR Odbor vývoje a správy aplikací

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

Nastavení zabezpečení

Popis programu EnicomD

Modul msender message Sender. Nápověda

Setkání uživatelů programu SSB2000, Skalský dvůr, SSB2000 bez hranic

43 HTML šablony. Záložka Šablony v systému

Datový sklad. Pracovní manuál k obsluze datového skladu 1. UVODNÍ STRANA ADMINISTRAČNÍ ROZHRANÍ. Jednotlivé ikony mají následující funkce: MAILING

DATA ARTICLE. AiP Beroun s.r.o.

RESTful API TAMZ 1. Cvičení 11

Digitální identita Moderní přístup k identifikaci klienta. Pavel Šiška, Štěpán Húsek, Deloitte Digital - Technology Services

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

Technologické postupy práce s aktovkou IS MPP

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MS Access propojení relací s formuláři a sestavami Ing.

Komunikace se Základními registry v prostředí MČ Praha 7

Provozní dokumentace. Seznam orgánů veřejné moci. Příručka pro běžného uživatele

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

Manuál pro obsluhu Webových stránek

Správa obsahu webové platformy

Nápověda aplikace Patron-Pro

Synchronizace CRM ESO9 a MS Exchange

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Spectu CMS. Následující text předpokládá znalost uživatelské dokumentace aplikace Spectu.

Formulář NÚV v programu PPP4

Uživatelský manuál: Fuelomat systém

Transkript:

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 13. 2. 2019 Webové aplikace Autentizace, uživatelsky orientované aplikace, internacionalizace a lokalizace

strana 2 Autentizace Proces ověření identity uživatele Obvykle pomocí loginu a hesla login je unikátní někdy email (problém se změnou) heslo je "klíč"

strana 3 Jiné způsoby autentizace něco znát heslo, pin něco mít klíč, čip, mobil pro opsání kódu, certifikát někým být otisky prstů, oční sken, rozpoznání obličeje => vícestupňové ověřování kombinace

strana 4 Autentizace - uložení hesla plain text někdy se používá přímo v kódu!!! hash a salt nepoužívat md5 ani sha1 nový modul v PHP (5.5.0) password_hash() password_verify()

Práce se saltem - schema strana 5

strana 6 Autentizace - zabezpečení Můžeme omezit počet pokusů pro přihlášení za časovou jednotku je možné upozornit administrátora Je možné vyžadovat heslo minimální délky s rozmanitými znaky, aby byl ztížen útok hrubou silou Salt chrání shodná hesla v DB Nejlepší je 2F ověření

strana 7 Napadení hashe kolize hashů 2 jiné řetězce generují stejný hash brute-force hledání hesla zkoušením kombinací proto musí být hashovací funkce pomalá Pro generování hashů lze využít GPU desítky miliónů za sekundu (md5)

strana 8 Ukázka md5 brute-force útoku Rychlost generování hashů za sekundu Vždy na jedno jádro md5 sha1 password_hash() Intel Core i5 3,2GHz PHP 5.6.17 Intel Core i5 3,2GHz PHP 7.0.4 PASSWORD_BCRYPT 607000 580000 15 1030000 1030000 15 Akela PHP 5.6.16 406000 390000 15 Intel Core 2 Duo 2,1GHz PHP 7 800000 715000 10 Heslo délky 6 a-z: 308 915 776 PHP7 je opravdu rychlejší!

strana 9 Autorizace v SPA aplikacích REST zakazuje použít session Používají se tokeny Token obsahuje datovou část a kontrolní součet, který zabraňuje svévolné modifikaci Klíč je znám jen na backendu Např. JWT

strana 10 Ukládání uživatelských atributů Uživatel může v aplikaci provádět různá nastavení není vhodné ukládat vše do jedné tabulky, např. ''users" vytvoříme např. tabulku adres, tabulky nastavení pro jednotlivé moduly apod. někdy je vhodné volitelné nastavení ukládat pod identifikátory (není nutné měnit strukturu DB)

strana 11 Ukládání uživatelských atributů složitější realizace, bez nutnosti měnit DB co když potřebuju evidovat nové nastavení? nutná změna DB

strana 12 ACL model Access Control List Řídí přístup uživatel ke zdrojům Obvykle je realizován pro skupiny (role) Uživatelé ve skupinách Může se dědit Každá skupina má seznam povolených akcí pro dané zdroje Lze realizovat i zakázané akce

ACL strana 13

strana 14 ACL $group = $currentuser->getgroup(); if($group->hasperm('delete_user')) { $anotheruser->delete(); } else { showerror('permission denied'); }

Internacionalizace a lokalizace strana 15

strana 16 Internacionalizace a lokalizace - proč? Zahraniční návštěvníci/zákazníci naši nebo našich zákazníků jsme země uprostřed Evropy ale malá internet je celosvětový

strana 17 Internacionalizace Proces rozšíření aplikace, aby byla schopná pracovat v jiných prostředích je to hledisko návrhu aplikace jen potenciálně, nemusí se to nikdy stát Zkratka i18n Internacionalisation

strana 18 Lokalizace Proces přizpůsobení aplikace lokálnímu prostředí Děje se vícekrát, podle počtu trhů kde prodáváme produkt Zkratka l10n localisation

strana 19 i18n a l10n Není to drahé, ale je potřeba systém navrhnout a vyvíjet přímo s podporou Nejde udělat vše Pro správce stránek je to HODNĚ práce navíc Místo jednoho webu má najednou n webů

strana 20 Hlavní znaky Možnost přepnout/nastavit jazyk formát data první den týdne měnu jednotky směr textu (např. zprava doleva) způsob výpočtu daně, spotřeby,

strana 21 Na co je potřeba myslet Data v DB Statické texty v šablonách Krátké hlášky (např. chyby) generované z PHP nebo JS Texty v obrázcích Design Obsah Rozdíly v CSS

strana 22 Data v DB 1 Pro každý jazyk samostatná tabulka Někdy vhodné, protože chceme oddělit obsah pro různé jazyky articles_cze, articles_eng news_cze, news_eng products_cze, products_eng přidání jazyka znamená modifikaci DB

strana 23 Data v DB 2 Každá entita na vlastním řádku Někdy vhodné, protože chceme oddělit obsah pro různé jazyky není nutné modifikovat DB pro další jazyk

strana 24 Data v DB 3 Pro každý jazyk speciální pole u rozdílných záznamů Obsah v jiných jazycích není oddělen Pro neexistující překlad se použije výchozí products id, title_cze, title_eng, description_cze, description_eng přidání jazyka znamená modifikaci DB, ale vše je v jedné tabulce

strana 25 Data v DB 4 Jazykově závislé texty v separátní tabulce Výchozí texty přímo Výchozí text je snadno dostupný LEFT JOIN VS JOIN není nutné modifikovat DB pro další jazyk, ale jsou složitější SELECTy

strana 26 Data v DB Je vhodné umět zkombinovat přístupy, jelikož každý se hodí k něčemu jinému Vyžaduje vhodné administrační rozhraní Problém je lokalizace nepřeložených textů Použije se výchozí jazyk Jak to poznat?

strana 27 Data v DB - kde použít co? Máme dáno N jazyků nebo nevíme? Individuální tabulky/řádky Kde je obsah pro různé jazyky jiný co není nutné pro všechny mutace Např. články, novinky, menu, bannery, Sloupce/překladová tabulka Kde se liší jen některé údaje Např. produkty eshopu, kategorie článků, názvy parametrů,

strana 28 Data v DB - čísla, data, ceny, Cena, technické parametry, data, časy Lze uložit v základní hodnotě a aplikovat přepočet (konverzi) až při zobrazení Čas i se zónou Výhodou je, že se nemusí editovat vše dle počtu jazyků Při editaci se použije buď výchozí hodnota nebo je nutná konverze

strana 29 Statické texty v šablonách Někdy jde o velké kusy textu Je možné používat identifikátory a text ukládat samostatně jinde Přímo v šabloně (přehledné?) v DB klient může snadno upravit, není nutná synchronizace v jiném souboru

strana 30 Statické texty v šablonách $messages = array( "cze" => array( "nadpis" => "Ahoj světe!", ), "eng" => array( "nadpis" => "Hello world!", ), ); <h1>{nadpis translate}</h1>

strana 31 Krátké hlášky v kódu Pro chyby a potvrzení Obvykle se ukládají překlady do DB, v kódu je např. jen výchozí verze $message = getmessage( ); "forms.register.errortaken", "Username already taken." identifikátor a výchozí

strana 32 Krátké hlášky v JS Snažíme se do JS nedávat pevné textové hlášky lze vložit v HTML šabloně jako skrytý element JS kód lze generovat podobně jako šablonu (pomalé) Napsat vlastní systém pro vyhledávání hlášek pomocí identifikátorů v JS

strana 33 Texty v obrázcích Snažíme se texty do obrázků nevkládat můžeme použít např CSS font, rotaci, efekty Obrázky mohou mít více variant filtr pro vložení <img src="{img.png lngimg}" /> načte např. cze/img.png nebo eng/img.png

strana 34 Rozdílná CSS Dodatečný CSS soubor načtený podle jazyka Načteme např.: style_cze.css style_eng.css Stejné CSS třídy ale jiné obrázky pro pozadí jiné velikosti/pozice elementů některé elementy mohou být zneviditelněné co směr textu?

strana 35 ORM a šablony Je nutné mít podporu v ORM vrstvě názvy tabulek a sloupců se mění podle aktuálního jazyka nebo se připojuje tabulka s překlady Šablonovací systém musí umožňovat překlady statické hlášky, lze řešit přes filtry { totopreloz}

strana 36 SPA a REST REST API komunikuje v daném jazyku, který volí frontend /cs/product/1513 /en/product/1513 Statické hlášky v šablonách stejně jako na backendu (identifikátor + překlad do všech jazyků)

strana 37 Další informace Existují systémy pro strojový překlad nekvalitní výsledky Přidání nebo odebrání jazyka pro překlad je obvykle operace vyžadující změnu struktury databáze Místo identifikátorů hlášek lze jako klíč pro vyhledání textu použít přímo výchozí text Pak lze mít překlady v jedné tabulce a neměnit DB

strana 38 Další informace Složitější systémy pro překlady umí: jednotné číslo množné číslo množné číslo na základě hodnoty 1 program 3 programy 5 programů

strana 39 Podpora ve frameworcích Většina frameworků podporuje překlad statických textů v šablonách Problém může být ORM protože struktura DB záleží na požadavcích aplikace a zákazníka Překlady ovlivňují SQL dotazy (data jsou v DB) Někdy je ORM spíš překážka

strana 40 Checkpoint Proč nepoužívat session u REST API? Proč má být hashovací funkce pomalá? Co všechno se dá lokalizovat? Proč je lepší internacionalizaci aplikace provádět už od začátku?