From 7f909e709c9455c77e66b95961d8cd148830e49d Mon Sep 17 00:00:00 2001 From: Emil Miler Date: Mon, 4 May 2020 18:37:52 +0200 Subject: [PATCH] =?UTF-8?q?Zalamov=C3=A1n=C3=AD=20slov=20na=20koci=20?= =?UTF-8?q?=C5=99=C3=A1dk=C5=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kap-generatory.tex | 2 +- kap-paradigmata.tex | 2 +- prace.pdf | Bin 564204 -> 564207 bytes prace.tex | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/kap-generatory.tex b/kap-generatory.tex index fc2f428..e3e1d8e 100644 --- a/kap-generatory.tex +++ b/kap-generatory.tex @@ -29,7 +29,7 @@ Sledování a analýze nejčastějších chyb webových aplikací a serverů se Většina těchto chyb se vztahuje právě k~dynamickým webovým aplikacím. Bezpečnost tedy závisí nejen na programátorovi, jenž aplikaci vytváří, ale také na tom, že programovací jazyk je bezpečně implementován. To nelze tvrdit o~nejpoužívanějším jazyce PHP, který obsahuje mnoho chyb, viz statistika nalezených bezpečnostních děr na serveru \cite{cve_php}, který se tímto tématem zabývá. Jazyk zároveň nevede programátora k~psaní bezpečného kódu, což má za následek nebezpečené aplikace, pokud si autor nedá pozor na správné ošetření vstupů a dalších bezpečnostních aspektů programu. -Podstatným příkladem chybovosti dynamických webů je systém Wordpress, v~němž jsou podle serveru \cite{cve_wordpress} každý rok nalezeny desítky bezpečnostních chyb, přičemž mnoho dalších přibývá s~instalací nezabezpečených rozšíření. Napří\-klad na začátku roku 2020 byla nalezena bezpečnostní chyba v~rozšíření využívaném na více než dvě stě tisících webových stránkách, která útočníkům umožňovala smazat obsah databáze \citep{thehackernews_wordpress_1}. Na konci roku 2019 umožnila chyba ve dvou nezabezpečených rozšířeních neautorizované přihlášení k~účtu administrátora bez použití hesla \citep{thehackernews_wordpress_2}. +Podstatným příkladem chybovosti dynamických webů je systém Wordpress, v~němž jsou podle serveru \cite{cve_wordpress} každý rok nalezeny desítky bezpečnostních chyb, přičemž mnoho dalších přibývá s~instalací nezabezpečených rozšíření. Napří\-klad na začátku roku 2020 byla nalezena bezpečnostní chyba v~rozšíření využívaném na více než dvě stě tisících webových stránkách, která útočníkům umožňovala smazat obsah databáze \citep{thehackernews_wordpress_1}. Na konci roku 2019 umožnila chyba ve dvou neza\-bezpečených rozšířeních neautorizované přihlášení k~účtu administrátora bez použití hesla \citep{thehackernews_wordpress_2}. Údržba velkých webových aplikací je často problematická. Kód je nutné udržovat v~návaznosti na aktualizace daného jazyka, databázového systému a dalších aspektů. Těmto aktualizacím se z~bezpečnostních důvodů nelze vyhýbat. Statický web nemusí udržovat funkční propojení s~databázemi a dalšími částmi systému, a je tedy mnohem méně náročný na dlouhodobou údržbu. Při zvolení správného generátoru není nutná ani údržba šablon a celý systém při zachování stejného prostředí nepřestane fungovat. Protože statický generátor nepracuje s~uživatelským vstupem, vyhýbá se bezpečnostním chybám a tím i nutným aktualizacím. diff --git a/kap-paradigmata.tex b/kap-paradigmata.tex index 14aec9e..90c9524 100644 --- a/kap-paradigmata.tex +++ b/kap-paradigmata.tex @@ -40,7 +40,7 @@ Zola\footnote{\url{https://www.getzola.org/}} & Rust Za obecného zástupce tohoto druhu stránek lze považovat Wikipedii, která podnítila vznik spousty jiných takzvaných \textit{Wiki systémů} a stránek. Jde o~formu stránky, jež obsahuje velké množství informací s~různou provázaností. Nejde o~lineární dokumentaci projektu, nýbrž o~encyklopedii obecných informací. -Jak již bylo řečeno, tuto formu stránek lze implementovat jakýmkoliv generátorem. Existují ale generátory vytvořené přímo pro účel tohoto paradigmatu. Takových generátorů je ovšem málo, jelikož jedním ze základních znaků wiki je to, že její obsah tvoří komunita uživatelů, což nemusí být vždy vhodné pro systém statického generování obsahu. Jedním takovým programem je ikiwiki\footnote{\url{https://ikiwiki.info/}}, který funguje stejně jako ostatní sta\-tické generátory. Další programy, například MDwiki\footnote{\url{https://dynalon.github.io/mdwiki/}}, zpracovávají Markdown přímo v~prohlížeči a HTML obsah tedy není předgenerován na serveru. +Jak již bylo řečeno, tuto formu stránek lze implementovat jakýmkoliv generátorem. Existují ale generátory vytvořené přímo pro účel tohoto paradigmatu. Takových gene\-rátorů je ovšem málo, jelikož jedním ze základních znaků wiki je to, že její obsah tvoří komunita uživatelů, což nemusí být vždy vhodné pro systém statického generování obsahu. Jedním takovým programem je ikiwiki\footnote{\url{https://ikiwiki.info/}}, který funguje stejně jako ostatní sta\-tické generátory. Další programy, například MDwiki\footnote{\url{https://dynalon.github.io/mdwiki/}}, zpracovávají Markdown přímo v~prohlížeči a HTML obsah tedy není předgenerován na serveru. Program MDwiki je prezentován jako generátor vytvořený na míru pro wiki stránky, ovšem jeho výstup je velice podobný generátorům z~tabulky \ref{tab:generatory-technicka-dokumentace}. diff --git a/prace.pdf b/prace.pdf index 1d3a9d957d9f683964e44d0b66631da39c53b991..8baf51497a0a51ca25d01d9f475e2e41e0ec44d5 100644 GIT binary patch delta 10214 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 C^I}r~ delta 10168 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 H$zuFJO-U;T diff --git a/prace.tex b/prace.tex index 25c59b9..f63669f 100644 --- a/prace.tex +++ b/prace.tex @@ -162,7 +162,7 @@ Na závěr děkuji partnerce a rodině za podporu během psaní této práce. % Abstrakt (doporučený rozsah cca 80-200 slov; nejedná se o zadání práce) \def\Abstrakt{% -Bakalářská práce pojednává o~problematice statických webových stránek a jejich generátorů. Popisuje nejčastěji používaná webová paradigmata, generátory a značkovací jazyky, které se ke psaní obsahu těchto stránek používají. Součástí práce je i taxonomie požadavků a jejich modelová implementace ve formě celého systému pro generování statických webových stránek, včetně optimalizace a implementace vlastních rozšíření a verzovacího systému pro správu obsahu. V~závěrečné části je modelová implementace vyhodnocena na základě dříve zmíněných požadavků a poznatků z~předchozí části práce. +Bakalářská práce pojednává o~problematice statických webových stránek a jejich gene\-rátorů. Popisuje nejčastěji používaná webová paradigmata, generátory a značkovací jazyky, které se ke psaní obsahu těchto stránek používají. Součástí práce je i taxonomie požadavků a jejich modelová implementace ve formě celého systému pro generování statických webových stránek, včetně optimalizace a implementace vlastních rozšíření a verzovacího systému pro správu obsahu. V~závěrečné části je modelová implementace vyhodnocena na základě dříve zmíněných požadavků a poznatků z~předchozí části práce. } \def\AbstraktEN{% This bachelor's thesis deals with static websites and static web generators. It describes the most used website paradigms, static web generators and typesetting languages, which are used as source files for the content of the website. A~part of the thesis is dedicated to the taxonomy of requirements for a specific website and its actual implementation with optimizations, implementations of custom extensions and a Content Management System. The last part of the thesis evaluates the created implementation according to the given requirements and findings from the first part.