Hlavní stránka › Fóra › Forum pro soutěžící SOČ › Obhajoby – Zlínský › 42 – kraj ZL – obory 01, 18
- Toto téma je prázdné.
-
AutorPříspěvky
-
-
Drahoslav ViktorýnHost
Porota oboru 01 – matematika, 18 – informatika
Složení poroty:
Mgr. Lenka Ševčíková (předseda)
Mgr. Jaroslav Hodl
Ing. Ladislav Jančařík
Ing. Martin Mlčák -
Drahoslav ViktorýnHost
Matouš Cimala
Gymnázium JAK a JŠ Uherský Brod
Zobrazování Lobačevského geometrie
obor 01
Videoprezentace – odkaz do úložiště: https://uloz.to/file/vRFPCtMFfusp/stredoskolska-odborna-cinnost-1-matous-cimala-zobrazovani-lobacevskeho-geometrie-mov
Otázky poroty: -
Drahoslav ViktorýnHost
Marek Kozumplik
OA, VOŠ, JŠ Uherské Hradiště
Matematické funkce
obor 01
Videoprezentace: https://youtu.be/g2bAl70aSbc
Otázky poroty: -
Drahoslav ViktorýnHost
Přemek Janda
Gymnázium a JŠ Zlín
Webový systém Hvězdárny Zlín
obor 18
Videoprezentace: https://youtu.be/jMzhC4uFHWk
Otázky poroty: -
Drahoslav ViktorýnHost
Klára Brázdilová, Hynek Pavlacký
Gymnázium a JŠ Zlín
Systém pro debatní soutěže formátu Verbattle
obor 18
Videoprezentace: https://youtu.be/jSIj8IG-a4A
Otázky poroty: -
Drahoslav ViktorýnHost
Dominik Adossou, Vilém Pecháček
SŠPHZ Uherské Hradiště
2D počítačová hra Retro World
obor 18
Videoprezentace: Není
Otázky poroty: -
Drahoslav ViktorýnHost
Radim Čech
OA, VOŠ, JŠ Uherské Hradiště
Tournament Manager
obor 18
Videoprezentace: Není – pouze PowerPoint prezentace v ZIP příloze v přihlášce
Otázky poroty: -
Drahoslav ViktorýnHost
Ondřej Budín
SŠ ‒ COPT Kroměříž
Cesta k IPv6-only síti SŠ-COPT Kroměříž
obor 18
Videoprezentace: https://www.youtube.com/watch?v=jwwzPuWM550
Otázky poroty: -
Lenka ŠevčíkováHost
Matouš Cimala
Gymnázium JAK a JŠ Uherský Brod
Zobrazování Lobačevského geometrieHezký den, porota si připravila následující otázky
1. Co Tě vedlo k tomu, věnovat se právě Lobačevského geometrii?
2. Uvedl jsi, že Aplikace stále vykazuje chyby při Poincarého vykreslování některých přímek a při výpočtech úhlů, půjde dané chyby vůbec odstranit, popřípadě, co bude potřeba pro odstranění udělat?
-
Matouš CimalaHost
Dobrý den,
e-mail s pokyny k používání fóra jsem si přečetl až teď, pokusím se tedy vložit svou odpověď znovu, do správného vlákna. Doufám, že se to tentokrát podaří, omlouvám se za duplicitu.
Co mne vedlo k tomu, věnovat se právě Lobačevského geometrii?
K Lobačevského geometrii jsem se dostal víceméně náhodou, při zadávání seminárních prací so matematického semináře jsem si téma „Neeukleidovské geometrie“ vybral jen „podle názvu.“ Na celém tématu mne zaujala hlavně potřeba celkového přehodnocení pohledu na geometrii. Lobačevského geometrie se věnuji také proto, že (alespoň podle mého dojmu) je v českém jazykovém prostoru lépe zpracovaná než geometrie eliptická, které bych se chtěl také v budoucnu věnovat. Dovedu si představit, že by v nové verzi aplikace bylo možné měnit zakřivení roviny a tím plynule přecházet od geometrie hyperbolické přes eukleidovskou až k eliptické. Otázkou by zůstávala volba vhodných (na sebe navazujících) modelů.
Další neeukleidovské geometrie (jako např. geometrie afinní) znám pouze podle jména a, ač uznávám jejich zajímavost, nehodlám se jim v nejbližší době věnovat.Uvedl jsem, že Aplikace stále vykazuje chyby při Poincarého vykreslování některých přímek a při výpočtech úhlů, půjde dané chyby vůbec odstranit, popřípadě, co bude potřeba pro odstranění udělat?
Při Poincarého vykreslování přímek blízkých ose x se nezobrazují jejich konce. Toto je (podle mého) způsobeno způsobem kreslení, kdy pro každou y-ovou (eukleidovskou) souřadnici naleznu odpovídající x-ové a získané body spojím čarou. U kružnicových oblouků velmi podobných ose x je ale pro několik různých bodů y-ová souřadnice prakticky stejná (souřadnice musím udávat v jednotkách – pixelech) a vypočte se tedy jen jeden z nich. Tato vada lze odstrenit použitím kreslící funkce arc(), která na základě zadaných hodnot vykreslí kružnicový oblouk. Této funkci jsem se chtěl původně vyhnout, protože při neopatrné implementaci by mohla vykreslovat l-přímky vně modelu.
Při výpočtech úhlů používám limitní tvar kosinové věty pro hyperbolickou geometrii pro strany trojúhelníka blížící se nekonečnu. Tato úprava je mým výtvorem, chápu tedy, že nefunguje, ale nerozumím proč. Při opakovaných výpočtech jsem došel ke stejnému výsledku. Tuto chybu lze odstranit buďto prozatimním vytvořením konečného trojúhelníka, kde bych úhel spočítal kosinovou větou, nebo spočítáním úhlu jako úhlu tečen kružnicových oblouků.
Oběma těmto způsobům jsem se chtěl vyhnout, protože v současném stavu je kód aplikace značně chaotický.V současné době chystám druhou verzi aplikace, založenou na objektově orientovaném paradigmatu, od něhož očekávám větší přehlednost. Obě výše zmíněné chyby zde plánuju napravit, a dále přidat některé možnosti uvedené v závěru mé SOČ.
-
-
Lenka ŠevčíkováHost
Marek Kozumplík
OA, VOŠ, JŠ Uherské Hradiště
Matematické funkceHezký den, porota si připravila následující otázky
1. V čem se liší tvůj program od konkurence (např. GeoGebra), v čem by se dal ještě program vylepšit (v závěru jsi zmínil, že jsou ještě možnosti pro zlepšení, ale neuvedl jsi jaké)? Neuvažoval jsi program převést do on-line prostředí (aby se k němu dalo přistupovat odkudkoliv).
2. Není trochu nepraktické, že je potřeba naistalovat si Javu, aby se dal program spustit? „Běžný“ učitel matematiky nebo žák si tedy program nespustí.
-
Marek KozumplíkHost
Vážená poroto,
K otázce č. 1:
Můj program se liší ukládáním grafů, tvorbou testů do PDF, nastavením stylu zobrazené křivky a panelu.
Další verze aplikace bych vylepšil o možnost nastavení rozložení otázek výsledného PDF dokumentu při vytváření testů. Databáze by šla nahrát na hosting, pomocí přihlášení by mohl uživatel používat svá uložená data na více počítačích.
Do online prostředí by se dal integrovat ve formě java appletu, ale aplikaci jsem vyvíjel dle požadavků vyučujícího s ohledem na to, aby byl použitelný i bez připojení k internetu.K otázce č. 2:
Myslím, že běžný žák má Javu na PC nainstalovanou, Java je navíc multiplatformní, tzn. že aplikace v javě lze spustit na libovolném operačním systému. U nás ve škole je součástí každého počítače. Javu jsem si vybral hlavně proto, že jsme se v ní učili programovat a mám s ní největší zkušenosti.S pozdravem
Marek Kozumplík-
Lenka ŠevčíkováHost
U vás ve škole je na každém PC, protože ji používáte ve výuce. My máme Visual studio. Javu jsem si musela naistalovat, abych si program spustila. Za svůj život jsem programovala ve 12 jazycích, ale Java k nim nepatří. Ještě jsem ji nepotřebovala.
Nemá s ní vůbec žádné zkušenosti. Nejde projekt uložit ve spustitelné podobě *.exe?Běžný žák (netechnických oborů) dost často ani neví, že Java existuje.
-
Marek KozumplíkHost
Aplikaci lze převést do spustitelného souboru *.exe.
-
-
-
-
Lenka ŠevčíkováHost
Přemek Janda
Gymnázium a JŠ Zlín
Webový systém Hvězdárny ZlínHezký den, porota si připravila následující otázky
1. Proč se přihlašovat/registrovat, v čem jsou výhody?
2. Design je o vkusu každého z nás, ale zdá se mi, že titulní strana webu a prostředí pro přihlášené uživatele je vizuálně hodně odlišná, nebylo by lepší to sladit do jednoho designu? Nebo to byl záměr?
3. Stránky jsou v testovacím režimu. Je možné je navštívit? -
Lenka ŠevčíkováHost
Klára Brázdilová, Hynek Pavlacký
Gymnázium a JŠ Zlín
Systém pro debatní soutěže formátu Verbattle
obor 18Hezký den, porota si připravila následující otázky
1. Tabulka výsledků, která je vidět v dokumentaci, je přístupná pro všechny, nebo jen pro rozhodčí a pořadatele? (Určitě by i soutěžící zajímalo, jak si vedou) Co bude s daty po skončení soutěže? (smažou se, zůstanou uloženy, a budou sloužit pro další zpracování – historie umístnění…).
2. Kterou funkci programu, kromě nového rychlého rozlosování, nejvíce ocenili organizátoři zmiňované soutěže?-
Klára BrázdilováHost
Vážená poroto,
k vaší otázce č. 1:
Tabulka výsledků, která je vidět v dokumentaci, je přístupná pro všechny, nebo jen pro rozhodčí a pořadatele? (Určitě by i soutěžící zajímalo, jak si vedou) Co bude s daty po skončení soutěže? (smažou se, zůstanou uloženy, a budou sloužit pro další zpracování – historie umístnění…).Tabulka výsledků, kterou můžete vidět v dokumentaci je přístupná na základě oprávnění, přidělených uživatelům. V průběhu soutěže má k této tabulce přístup organizátor události/soutěže, který odpovídá za kontrolu výsledků, jejich zpracování a uveřejnění, případně jím další pověřené osoby/uživatelé s oprávněním k přístupu. Soutěžící jako takoví se výsledek své debaty/kola dozví od rozhodčích po její/ho ukončení. U událostí bývá zvykem, že výsledky nejsou v celkové podobě účastníkům dostupné a to až do vyhlášení soutěže, aby účastníci neopouštěli soutěž předčasně a podporovali i další soutěžící. Při vyhlášení je celková tabulka s výsledky vždy zobrazena všem účastníkům na zobrazovacím zařízení a po ukončení jsou výsledky dostupné na linku na webu a zároveň je pedagogům, či osobám, které registrovaly jednotlivé týmy do soutěže tato tabulka zaslána i jako příloha pdf společně s dalšími materiály jako certifikáty, fotografie, videozáznamy a podobně.
Záznamy jako takové zůstávají uložené i po ukončení soutěže a to se souhlasem účastníků. Záznamy slouží v tuto chvíli pouze pro statistické a historické údaje do výroční zprávy a podobně.
Soutěže v současné době nemají postupový charakter, ale jelikož zúčastněné školy a pedagogové o to mají zájem, jelikož soutěže mají nadregionální charakter, tak od školního roku 2020/2021 je toto v plánu a z toho důvodu budou záznamy také uloženy. Již nyní pracujeme na rozšíření, které bude zpracovávat celkové výsledky, po té co se uskuteční jednotlivé soutěže. Uložená data z tohoto školního roku použijeme jako vstupní data pro testování funkčnosti našeho rozšíření.
K otázce č. 2:
Kterou funkci programu, kromě nového rychlého rozlosování, nejvíce ocenili organizátoři zmiňované soutěže?Organizátoři jednotlivých soutěží, stejně tak jako pedagogové a rozhodčí oceňují to, že celá webová platforma je velmi jednoduše dostupná pro všechny uživatele, bez nutných registrací, nevyžadují-li to bezpečnostní opatření pro jednotlivá oprávnění, a že není zapotřebí nic instalovat, vše je jednoduše srozumitelné i pro běžného uživatele. S tím souvisí i to, že celé prostředí je plně responzivní a je možné k němu přistupovat z jakýchkoliv zařízení s různými rozlišeními zobrazovací plochy, v dnešní době běžně z mobilu.
Organizátoři oceňují i zjednodušení procesu registrace účastníků a následnou práci s daty, kde v současné době pracujeme na dalším rozšíření, které bude zpracovávat statistiky o jednotlivých soutěžích, například věkový průměr účastníků, genderové složení, zúčastněné okresy a pod., což využijí organizátoři ve výkaznictví pro účastníky, poskytovatele financí, darů a do výročních zpráv, celá soutěž bude tak více transparentní.
Avšak organizátorům i rozhodčím v současné době při organizování soutěže asi nejvíce dle jejich slov pomáhá zadávání výsledků on-line jednotlivými uživateli s oprávněním pro zadávání výsledků/rozhodčími, což velmi zkracuje časovou náročnost soutěže, která se obvykle odehrává v budově na několika místech.
Organizátoři zaznamenali ze strany pedagogů ocenění za on-line registraci, kterou pedagogové vnímají jako jednoduchou a přehlednou a zároveň oceňují, že nemusí mít nainstalovaný žádný textový nebo tabulkový editor.
S pozdravem
Klára Brázdilová, Hynek Pavlacký
-
-
Lenka ŠevčíkováHost
Dominik Adossou, Vilém Pecháček
SŠPHZ Uherské Hradiště
2D počítačová hra Retro WorldHezký den, porota si připravila následující otázky
1. Nechtěli jste spíše zkusit vytvořit vlastní hru? Takhle se nabízí možnost srovnávání s originály.
2. Co bylo z Vašeho pohledu nejsložitější na samotné tvorbě hry. Nechtěli jste přeci jen vyzkoušet vytvořit nějaký vlastní Asset a ten do hry umístit?
3. Nemáte prezentaci ani videoprezentaci práce, kde byste předvedli, že hry fungují. Dají se někde vyzkoušet? -
Lenka ŠevčíkováHost
Radim Čech
OA, VOŠ, JŠ Uherské Hradiště
Tournament Manager
obor 18Hezký den, porota si připravila následující otázky
1. Proč jsi se nerozhodl programovat aplikaci do podoby On-line. Když dám „tisk do PDF“ vytisknou se mi výsledky celého turnaje, nebo mám možnost vybírat, průběžné výsledky?
2. Byl program už „nasazen“ v nějakém turnaji?
3. Mohu si program spustit, když nemám v PC nainstalovanou Javu? -
Lenka ŠevčíkováHost
Ondřej Budín
SŠ ‒ COPT KroměřížCesta k IPv6-only síti SŠ-COPT Kroměříž
obor 18Hezký den, porota si připravila následující otázky
1. Zpětně když se podíváš, který krok v přechodu na IPV6 byl nejvíce problematický?
2. Lze nějak ošetřit zpětnou kompatibilitu z IPV4 na IPV6 (pokud si k Vám host donese zařízen, a ono nepodporuje IPV6).
3. Zjišťoval jsi kolik škol, či jiných organizací zřizovaných Zlínským krajem již uskutečnilo nebo započalo přechod na IPv6? -
Ondřej BudínHost
Vážená poroto, vážení návštěvníci fóra,
pokud se podívám zpětně, nejvíce problémů bylo s Wi-Fi přístupovými body Aruba iAP. To je bohužel dáno chybou ve firmware těchto přístupových bodů, díky které se šíří multicast provoz napříč všemi VLANami.
Zpětná kompatibilita záleží čistě na použitém přechodovém mechanizmu. V přístupových sítích jsou prakticky pouze dvě možnosti: dual-stack nebo IPv6-only sít + NAT64. První zmíněný mechanizmus jsem využil právě kvůli zpětné kompatibilitě pouze u takových podsítí, kde to bylo nezbytně nutné.
IPv6-only sít + mechanizmus NAT64 jsem volil právě u hostovských sítí, kde se zpravidla připojují mobilní zařízení s OS Android nebo iOS, případně notebooky se systémem Windows, macOS nebo Linux. Všechny podporované verze těchto operačních systémů podporují IPv6 protokol, takže s kompatibilitou není problém.
Abych ale odpověděl na otázku, zpětnou kompatibilitu lze řešit změnou přechodového mechanizmu, nicméně díky principu metody dual-stack by následná správa sítě byla komplikovanější a zejména časově náročnější.
Ohledně implementace protokolu IPv6 v jiných školách si udržuji základní přehled. Obecně, když jsem debatoval na téma IPv6, valná většina správců sítí má s protokolem IPv6 opravdu malé zkušenosti, které jsou dány neochotou se učit nové věci a nebo případně časovou zaneprázdněností. Na druhou stranu neustále z různých stran slyším, že veřejných IPv4 adres je málo. Všechny byly již přiděleny. A faktem je, že jediným řešením tohoto problému je zkrátka přechod na IPv6 protokol. Považuji za důležité si připustit, že i počítačové sítě se časem vyvíjejí, ostatně jako každý jiný obor v IT.
To, co většinou dotlačilo jiné školy IPv6 protokol implementovat, byl projekt IROP – Standard konektivity, jehož součástí je, zjednodušeně řečeno, povinnost pro školy tento protokol implementovat. Zajímavým zdrojem informací mohou být data z mapy pokrytí eduroamu. Lze z ní totiž vyčíst informace o podporovaném protokolu na připojených školách a jiných institucích. https://www.eduroam.cz/pokryti/
Lze tedy říci, že to jsou jednotky škol v kraji.
S pozdravem a přáním pevného zdraví
Ondřej Budín -
Přemek JandaHost
Dobrý den,
odpovím postupně na otázky:
1. Proč se přihlašovat/registrovat, v čem jsou výhody?
Přihlášení slouží pro již registrované uživatele webu, tedy pro ty, kteří si již vytvořili vlastní profil (zaregistrovali se). Dočasná verze je vytvořena tak, že po registraci (vytvoření účtu) se automaticky nabídne možnost vstoupit do interní sekce. Je to z toho důvodu, abyste Vy, porotci, mohli nahlédnout nerušeně do útrob systému. Po skončení mého angažmá v SOČ práva upravím a interní sekce bude přístupná jen pro členy ZAS.
Nicméně, po přihlášení uživatele s dostatečnými právy (např. účet admin) je možno ovlivňovat obsah v kalendáři, přidávat akce, měnit ostatní uživatele, vkládat fotografie a podobně.2. Design je o vkusu každého z nás, ale zdá se mi, že titulní strana webu a prostředí pro přihlášené uživatele je vizuálně hodně odlišná, nebylo by lepší to sladit do jednoho designu? Nebo to byl záměr?
Během vývoje jsem poskytl celkem tři varianty designu webu. Po domluvě s užší členskou základnou ZAS, jsme se rozhodli pro toto řešení. Záměrem bylo, aby úvodní strana byla rozdílná od ostatních, neobsahuje žádné podrobnější informace, ale spíše obsahuje nejdůležitější info a slouží jako rozcestník pro další přesměrování na stránky. Vstupem na stránku pro přihlášení se dostáváme do tzv. interní sekce, která je následně záměrně celá pojata vlastním způsobem, tak aby byla odlišena od obsahu, který je přístupný pro běžného uživatele. Mohu tedy říci, že v celém prostředí mého webu se nacházejí 3 designové sekce (jde však o záměr).3. Stránky jsou v testovacím režimu. Je možné je navštívit?
Ano je to možné. Jsou zde však prozatímní data, která nejsou reálná.
Ve své dokumentaci je odkaz (https://docs.google.com/document/d/1C5ed9mbGrJqH41JWSB2vqqq43q_Ez98tSdgBQs1klpI/edit?usp=sharing) na cloudové úložiště, respektive textový dokument, ve kterém jsou předpřipravené profily, na kterých lze demonstrovat rozdíly, které se dynamicky mění po přihlášení na web. Jedná se např. o přidávání akcí, novinek, úpravu profilů atd.
Samotný odkaz je: http://webzas.wz.cz/web_zas/Doufám, že jsem odpověděl dostatečně a těším se na zítřejší online-diskusi.
-
Ondřej BudínHost
.
-
Ondřej BudínHost
Vážený pane Jando, vážená poroto,
dovolte mi využít možnosti tohoto fóra a připojit se k diskuzi ohledně práce „Webový systém Hvězdárny Zlín“.
S vývojem webových aplikací mám více než šestileté zkušenosti. Jedna webová aplikace je také součástí mé práce „Cesta k IPv6-only síti SŠ-COPT Kroměříž“ v podobně školního intranetu.
Už při letmém pohledu na ukázky PHP kódu v prezentaci ve videu mi bylo jasné, že něco není v „pořádku“.
Na mnoha místech totiž chybí ošetření výpisu textu pomocí funkce htmlspecialchars(), která nám se správným nastavením zajistí korektní ošetření speciálních znaků, jež se mohou objevit v databázi uživatelským vstupem, či jinou cestou.
Aplikace sice provádí nějaké ošetření před uložením dat do databáze, nicméně tato technika není doporučovaný způsob. Jednak připravíme uživatele o možnost vkládat do textu speciální znaky, což je někdy potřeba, ale hlavně tím neošetříme výpis z již kompromitované databáze. Je tak možné, aby útočník do stránky načetl svůj vlastní škodlivý kód, kterým může klidně vylákat z návštěvníků webu i např. údaje do internetového bankovnictví nebo donutit uživatele si nainstalovat do počítače malware.
Navíc, s tím souvisí další problém, kdy pan Janda předem omezil znaky, které se mohou vyskytovat v uživatelském heslu. Omezení znaků v heslu nedává vůbec smysl, je to zbytečná komplikace pro uživatele. Řada uživatelů používá aplikaci správce hesel, která hesla generuje automaticky a samozřejmě, kvůli bezpečnosti, i se speciálními znaky. Takový uživatel by měl problém se na tomto webu zaregistrovat.
Omezení znaků v heslu zavání také otázkou, co autora práce k tomuto kroku vedlo? Pokud totiž jsou hesla ihned ukládána pomocí hashovací funkce password_hash() v PHP, což je takřka jediný způsob, jak s hesly nakládat správně a bezpečně, není pro omezení znaků vůbec žádný důvod. Leda, že by se hesla v databázi ukládala v prostém textu, což by byl další bezpečnostní faul. Mimochodem, funkce password_hash() je hashovací, nikoli šifrovací, jak je uvedeno v práci SOČ. Toto je opravdu důležitý rozdíl.
-
Ondřej BudínHost
Po pár minutách strávených procházením webu, jsem narazil na další, a to opravdu velký, bezpečnostní problém. Zjistil jsem, že interní sekce je dostupná i bez přihlášení uživatele. Což se v prohlížeči projeví vykreslením interní nástěnky a prázdných editačních formulářů.
Formuláře jsou sice prázdné, nicméně pokud si je vyplním ručně a zadám ID uživatele, mohu jako nepřihlášený uživatel upravovat libovolný uživatelský účet a například pomocí příkazu níže může útočník změnit opravdu triviálně e-mail, pomocí kterého si následně změní také heslo a získá tak přístup do jakéhokoli účtu.
curl ‚http://webzas.wz.cz/web_zas/pages/interni-sekce/upravit-vlastni-ucet.php‘ -H ‚Content-Type: application/x-www-form-urlencoded‘ –data ‚jmeno=admintest2&prijmeni=admin&datumnarozeni=2002-04-03&profilovy-obrazek=&ujmeno=admin&email=admin4%40admin.com&telefon=678541988&heslo=%40%23%26%24%24&status=Admin&datum-vzniku=20.+4.+2020+ve+12%3A31&pocet-prispevku=Ano&id=2&upravit=Upravit‘
Toto je opravdu vážný problém, díky kterému v budoucnu může kdykoliv dojít k úniku osobních údajů všech registrovaných návštěvníků a porušení GDPR. A navíc nelze vyloučit, že se v kódu nevyskytuje více takových chyb. To by spolehlivě pomohl odhalit audit kódu a strojové otestování webu.
-
Ondřej BudínHost
Dále aplikace při interní chybě zobrazuje příliš podrobností, které by se neměli zobrazovat, ale zapsat do logu na serveru. Tyto chybové hlášky totiž také dokáží útočníkovi prozradit velice cenné informace.
[errno] => 1064
[sqlstate] => 42000
[error] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near “ at line 1Práce na seznámení s webovými technologiemi (např. PHP, SCSS) je to pěkná, nicméně – v zájmu Hvězdárny Zlín a jejich návštěvníků – důrazně nedoporučuji tuto webovou prezentaci nasazovat do ostrého provozu. Mohu doporučit ošetření všech výpisů proměnných, revidovat práci s hesly a zcela přeprogramovat všechny skripty, které pracují s osobními údaji uživatelů nebo se týkají interní sekce.
Jelikož jde o webovou prezentaci, ve které se zpracovávají osobní údaje, měl by kód revidovat zkušenější programátor, který zná principy fungování webových aplikací a ví, jak se řeší bezpečnost.
A pro další projekt mohu doporučit vyzkoušet nějaký PHP framework včetně šablonovacího systému (skvělé je https://nette.org), který dokáže vyřešit tyto bezpečností záležitosti za programátora.
S pozdravem a přáním pevného zdraví
Ondřej Budín -
Ondřej BudínHost
Vážený pane Jando, vážená poroto,
dovolte mi využít možnosti tohoto fóra a připojit se k diskuzi ohledně práce „Webový systém Hvězdárny Zlín“.
S vývojem webových aplikací mám více než šestileté zkušenosti. Jedna webová aplikace je také součástí mé práce „Cesta k IPv6-only síti SŠ-COPT Kroměříž“ v podobně školního intranetu.
Už při letmém pohledu na ukázky PHP kódu v prezentaci ve videu mi bylo jasné, že něco není v „pořádku“.
Na mnoha místech totiž chybí ošetření výpisu textu pomocí funkce htmlspecialchars(), která nám se správným nastavením zajistí korektní ošetření speciálních znaků, jež se mohou objevit v databázi uživatelským vstupem, či jinou cestou.
Aplikace sice provádí nějaké ošetření před uložením dat do databáze, nicméně tato technika není doporučovaný způsob. Jednak připravíme uživatele o možnost vkládat do textu speciální znaky, což je někdy potřeba, ale hlavně tím neošetříme výpis z již kompromitované databáze. Je tak možné, aby útočník do stránky načetl svůj vlastní škodlivý kód, kterým může klidně vylákat z návštěvníků webu i např. údaje do internetového bankovnictví nebo donutit uživatele si nainstalovat do počítače malware.
Navíc, s tím souvisí další problém, kdy pan Janda předem omezil znaky, které se mohou vyskytovat v uživatelském heslu. Omezení znaků v heslu nedává vůbec smysl, je to zbytečná komplikace pro uživatele. Řada uživatelů používá aplikaci správce hesel, která hesla generuje automaticky a samozřejmě, kvůli bezpečnosti, i se speciálními znaky. Takový uživatel by měl problém se na tomto webu zaregistrovat.
Omezení znaků v heslu zavání také otázkou, co autora práce k tomuto kroku vedlo? Pokud totiž jsou hesla ihned ukládána pomocí hashovací funkce password_hash() v PHP, což je takřka jediný způsob, jak s hesly nakládat správně a bezpečně, není pro omezení znaků vůbec žádný důvod. Leda, že by se hesla v databázi ukládala v prostém textu, což by byl další bezpečnostní faul. Mimochodem, funkce password_hash() je hashovací, nikoli šifrovací, jak je uvedeno v práci SOČ. Toto je opravdu důležitý rozdíl.
Po pár minutách strávených procházením webu, jsem narazil na další, a to opravdu velký, bezpečnostní problém. Zjistil jsem, že interní sekce je dostupná i bez přihlášení uživatele. Což se v prohlížeči projeví vykreslením interní nástěnky a prázdných editačních formulářů.
Formuláře jsou sice prázdné, nicméně pokud si je vyplním ručně a zadám ID uživatele, mohu jako nepřihlášený uživatel upravovat libovolný uživatelský účet a například pomocí příkazu níže může útočník změnit opravdu triviálně e-mail, pomocí kterého si následně změní také heslo a získá tak přístup do jakéhokoli účtu.
curl 'http://webzas.wz.cz/web_zas/pages/interni-sekce/upravit-vlastni-ucet.php' -H 'Content-Type: application/x-www-form-urlencoded' --data 'jmeno=admintest2&prijmeni=admin&datumnarozeni=2002-04-03&profilovy-obrazek=&ujmeno=admin&email=admin4%40admin.com&telefon=678541988&heslo=%40%23%26%24%24&status=Admin&datum-vzniku=20.+4.+2020+ve+12%3A31&pocet-prispevku=Ano&id=2&upravit=Upravit'
Toto je opravdu vážný problém, díky kterému v budoucnu může kdykoliv dojít k úniku osobních údajů všech registrovaných návštěvníků a porušení GDPR. A navíc nelze vyloučit, že se v kódu nevyskytuje více takových chyb. To by spolehlivě pomohl odhalit audit kódu a strojové otestování webu.
Dále aplikace při interní chybě zobrazuje příliš podrobností, které by se neměli zobrazovat, ale zapsat do logu na serveru. Tyto chybové hlášky totiž také dokáží útočníkovi prozradit velice cenné informace.
[errno] => 1064
[sqlstate] => 42000
[error] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near “ at line 1Práce na seznámení s webovými technologiemi (např. PHP, SCSS) je to pěkná, nicméně – v zájmu Hvězdárny Zlín a jejich návštěvníků – důrazně nedoporučuji tuto webovou prezentaci nasazovat do ostrého provozu. Mohu doporučit ošetření všech výpisů proměnných, revidovat práci s hesly a zcela přeprogramovat všechny skripty, které pracují s osobními údaji uživatelů nebo se týkají interní sekce.
Jelikož jde o webovou prezentaci, ve které se zpracovávají osobní údaje, měl by kód revidovat zkušenější programátor, který zná principy fungování webových aplikací a ví, jak se řeší bezpečnost.
A pro další projekt mohu doporučit vyzkoušet nějaký PHP framework včetně šablonovacího systému (skvělé je https://nette.org), který dokáže vyřešit tyto bezpečností záležitosti za programátora.
S pozdravem a přáním pevného zdraví
Ondřej Budín -
Přemek JandaHost
Vážený pane soutěžící, jde vidět, že vás má práce vskutku zaujala a předvedl jste výtečnou analýzu. Za to vám velice děkuji, já sám o některých zmíněných problémech vím. Nicméně, kousíčky kódu, které jsou dostupné při mé prezentaci, nejsou zdaleka vše, co se provede. Přihlášení, jak již jsem nastínil v mé dokumentaci i odpovědi pro porotu je doposud nastaveno „chatrně“. Je zde tedy možné se dostat alternativní cestou.
Rád bych tedy připomenul, že je aplikace tedy v dosavadní formě TESTOVACÍ. Rozhodně není připravená na přímý provoz, neobsahuje relevantní data a proto atd.
Vskutku si vážím Vašeho bedlivého oka, a proto neváhejte přijít ještě s dalším zlepšením… třeba budete vědět o něčem, co mi uniklo.
Janda -
Matouš CimalaHost
Dobrý den,
co mne vedlo k tomu, věnovat se právě Lobačevského geometrii?
K Lobačevského geometrii jsem se dostal víceméně náhodou, při zadávání seminárních prací so matematického semináře jsem si téma „Neeukleidovské geometrie“ vybral jen „podle názvu.“ Na celém tématu mne zaujala hlavně potřeba celkového přehodnocení pohledu na geometrii. Lobačevského geometrie se věnuji také proto, že (alespoň podle mého dojmu) je v českém jazykovém prostoru lépe zpracovaná než geometrie eliptická, které bych se chtěl také v budoucnu věnovat. Dovedu si představit, že by v nové verzi aplikace bylo možné měnit zakřivení roviny a tím plynule přecházet od geometrie hyperbolické přes eukleidovskou až k eliptické. Otázkou by zůstávala volba vhodných (na sebe navazujících) modelů.
Další neeukleidovské geometrie (jako např. geometrie afinní) znám pouze podle jména a, ač uznávám jejich zajímavost, nehodlám se jim v nejbližší době věnovat.Uvedl jsem, že Aplikace stále vykazuje chyby při Poincarého vykreslování některých přímek a při výpočtech úhlů, půjde dané chyby vůbec odstranit, popřípadě, co bude potřeba pro odstranění udělat?
Při Poincarého vykreslování přímek blízkých ose x se nezobrazují jejich konce. Toto je (podle mého) způsobeno způsobem kreslení, kdy pro každou y-ovou (eukleidovskou) souřadnici naleznu odpovídající x-ové a získané body spojím čarou. U kružnicových oblouků velmi podobných ose x je ale pro několik různých bodů y-ová souřadnice prakticky stejná (souřadnice musím udávat v jednotkách – pixelech) a vypočte se tedy jen jeden z nich. Tato vada lze odstrenit použitím kreslící funkce arc(), která na základě zadaných hodnot vykreslí kružnicový oblouk. Této funkci jsem se chtěl původně vyhnout, protože při neopatrné implementaci by mohla vykreslovat l-přímky vně modelu.
Při výpočtech úhlů používám limitní tvar kosinové věty pro hyperbolickou geometrii pro strany trojúhelníka blížící se nekonečnu. Tato úprava je mým výtvorem, chápu tedy, že nefunguje, ale nerozumím proč. Při opakovaných výpočtech jsem došel ke stejnému výsledku. Tuto chybu lze odstranit buďto prozatimním vytvořením konečného trojúhelníka, kde bych úhel spočítal kosinovou větou, nebo spočítáním úhlu jako úhlu tečen kružnicových oblouků.
Oběma těmto způsobům jsem se chtěl vyhnout, protože v současném stavu je kód aplikace značně chaotický.V současné době chystám druhou verzi aplikace, založenou na objektově orientovaném paradigmatu, od něhož očekávám větší přehlednost. Obě výše zmíněné chyby zde plánuju napravit, a dále přidat některé možnosti uvedené v závěru mé SOČ.
-
Přemek JandaHost
Vážená poroto, milí kolegové,
dodám ještě pár slov na závěr. Cením si, jak je pan Budín aktivní. Nemohu se opravdu rovnat s 6letou zkušeností, nanejvýš tak dvěma lety. Chtěl jsem předvést práci, kterou jsem dělat já a nikdo jiný, pokud možno bez použití frameworků atd. Snad má i pár světlých míst, ale přiznávám, že na um pana Budína mohu vzhlížet z hloubi.
Těším se na další konstruktivní připomínky, jak ze strany poroty, a jak jsem zjistil, tak i od soutěžících samotných.
Děkuji převelice, Janda -
Jaroslav HodlHost
Systém pro debatní soutěže formátu Verbattle
Dobrý den, měl bych 3 dotazy:
a) Dokážete podrobněji popsat algoritmus generování rozpisu? Použili jste některý z obecně známých či svůj? Píšete, že je kdykoliv možné rozpis přegenerovat, pokud s ním není organizátor spokojen. V čem bude přegenerovaný rozpis jiný?
b) Kde organizátor vyhlašuje novou soutěž, resp. provádí rozlosování? V dokumentaci by bylo dobré mít i uživatelskou část.
c) V práci píšete „Vzhledem k formátu soutěže musí být počet týmů dělitelný třem“ Co se stane v případě, že se soutěže neúčastní počet týmů dělitelných 3? Ale přihlásí se třeba 7 týmů? Jak se toto řeší prakticky? -
Jaroslav HodlHost
Webový systém Hvězdárny Zlín
V kapitole 9 píšete: „Databázový systém není velice složitý. Z povahy webové aplikace nebylo potřeba vytvářet relační tabulky“.
Mít systém se 7 tabulkami, které nepotřebuji propojovat relacemi, se zdá celkem neobvyklé, obzvláště v případě, kdy je zde možnost přihlašování a editace.
Ve screenu jedné tabulky je sloupec „kdo_upravil VARCHAR(256)“. Nebylo by například zde vhodné použít cizí klíč do tabulky Uživatelů?
Uvést ERD v technické/programátorské dokumentaci je celkem důležité a ještě důležitější mít model správně navržen.-
Přemek JandaHost
Dobrý den,
v příkladu, který jste uvedl je vložen řetězec jméno-příjmení-iduživatele. Je to především z důvodu toho, aby se zjednodušil přístup k získání informací o kýžené akci. Není tak potřeba vytvářet separátní příkaz k další tabulce. Většinu příkazů jsem řešil pomocí LEFT JOIN, který uplatňuji např. u přidělení práv. Jedná se tedy o relační spojení a můj výraz byl myšlen spíše, že nebylo potřeba vytvářet mnoho relačních tabulek.
Je pravda, že lze využít i relační tabulku u tohoto příkladu, dala by se tímto zobrazit i historie změn, které byly provedeny. O změně jsem uvažoval, ale nebyla nutná, a proto jsem ji zanechal v současné podobě.
-
-
Radim ČechHost
Dobrý den,
Proč jsi se nerozhodl programovat aplikaci do podoby On-line?
Aplikaci jsem programoval podle požadavků vyučujícího. Aplikace by ale šla uvést do online podoby například použitím stránek jako je heroku.com.
Když dám „tisk do PDF“ vytisknou se mi výsledky celého turnaje, nebo mám možnost vybírat, průběžné výsledky?
Tisk do PDF vytiskne výsledky celého turnaje.
Byl program už „nasazen“ v nějakém turnaji?
Ano, ale v době, kdy byla implementována jen fáze každý s každým. Fáze playoff byla odehrána „na papíře“ a zkouška proběhla bez chyb.
Mohu si program spustit, když nemám v PC nainstalovanou Javu?
Ne, ke spuštění je potřeba nainstalovat javu a opatřit MySql databázi. -
Klára BrázdilováHost
Vážený pane Hodle,
děkujeme Vám za Vaše dotazy a velmi rádi Vám vše upřesníme.K otázce A:
a) Dokážete podrobněji popsat algoritmus generování rozpisu? Použili jste některý z obecně známých či svůj? Píšete, že je kdykoliv možné rozpis přegenerovat, pokud s ním není organizátor spokojen. V čem bude přegenerovaný rozpis jiný?Algoritmus generování rozpisu je čistě naší prací, neboť formát soutěže Verbattle je atypický (soutěží proti sobě vždy 3 týmy) a neexistuje pro něj obecně známý algoritmus, jako například pro soutěže, ve kterých soutěží dvojice stylem „každý s každým“ či čtyři dvojice.
Algoritmus nejdříve načte z databáze data o týmech, které se soutěže účastní a pak ověří všechny nutné podmínky, např. zda je počet týmů dostatečný k vygenerování rozpisu.
Samotné generování funguje tak, že se vybere náhodně nějaký tým, následně algoritmus zjistí, které oponenty je možno k již vybranému týmu přiřadit a z nich náhodně vybere.Detailní popis algoritmus včetně ukázek kódu se nachází v textové části práce ve 4. kapitole od strany 17 po stranu 26.
Při přegenerování rozpisu se stejnými vstupními daty hraje roli náhoda a některé týmy by měly soutěžit proti jiným oponentům, než v předchozím rozlosování. K přegenerování dochází zpravidla v souladu s nahlášeným odjezdem týmu ze soutěže, jelikož se jedná o nadregionální soutěže a účastní se zpravidla školy ze čtyř moravských krajů a vzhledem k náročnosti spojení hromadnou dopravou je dána některým účastníkům, kteří to nahlásí s předstihem možnost účasti v dřívějších debatách v třetím kole (rozumíme tomu tak, že zpravidla proběhnou 3 kola debaty, každé kolo probíhá v několika místnostech a v každé místnosti debatuje počet týmů dělitelný třemi a to 3 a více týmů dle časových možností, tzn. v jedné místnosti po sobě probíhají jednotlivé debaty).
Druhý důvod přegenerování souvisí s vaší otázkou C. Může se stát, že se nějaký tým nebude moci soutěže zúčastnit a v takovém případě se rozpis přegeneruje s jinými vstupními daty.
K otázce B:
b) Kde organizátor vyhlašuje novou soutěž, resp. provádí rozlosování? V dokumentaci by bylo dobré mít i uživatelskou část.Organizátor vyhlašuje soutěže zpravidla měsíc před jejich konáním – rozumějte zasílá propozice a zpřístupní přihlašování týmů. V této fázi organizátor využije vlastní sekci webu pro správu událostí, kde může vytvořit událost či nějakou upravovat a tím se nám uloží data do databáze a je možné, aby se účastníci do ní registrovali. Po uzavření registrace, to je do termínu, kdy se mohou týmy registrovat provede organizátor rozlosování registrovaných týmů a přiřazení registrovaných rozhodčích. Všechny tyto úkony provede v rámci odkazů na rozcestníku, které jsou dostupné pouze jemu. Spravuje-li více událostí vybere z rolovací nabídky událost, kterou chce právě rozlosovat (stejně jako při vytváření soutěže), otevře si potřebný okaz (třeba pro rozlosování týmů), vybere soutěž, stiskne tlačítko “rozlosovat” a tím proběhne algoritmus na rozlosování, který je popsán výše. Po tomto úkonu je možné provést další přelosování se stejnými vstupními daty nebo s rozdílnými vstupními daty.
Organizátor zveřejňuje rozlosování na zobrazovacím zařízení na místě v den zahájení soutěže. V ten stejný den je zobrazení rozlosování pouze pro čtení dostupné i na veřejném linku na webu, aby si každý účastník mohl kdykoliv ověřit kdy a kde má být.
V dokumentaci je uživatelská část popsána velmi zběžně. Dokumentace je více zaměřena na technickou část věci, na kterou se ptáte ve své otázce A. Avšak celé prostředí je velmi intuitivní a uživatelská část je ukázána v naší video prezentaci. V případě potřeby je možné texty a ilustrace o uživatelské části více rozšířit.
K Vaší otázce C:
c) V práci píšete „Vzhledem k formátu soutěže musí být počet týmů dělitelný třem“ Co se stane v případě, že se soutěže neúčastní počet týmů dělitelných 3? Ale přihlásí se třeba 7 týmů? Jak se toto řeší prakticky?Soutěže se vždy, vzhledem k jejímu charakteru, účastní počet týmů dělitelný třemi. Organizátor/hostitelská organizace vždy zajistí dva týmy navíc, kdyby došlo k výpadku týmů přímo v den soutěže. Tyto týmy jsou dle dohody s účastníky buď soutěžní nebo nesoutěžní (tj. jejich výsledky se nepočítají do celkových výsledků. V systému se však zobrazují jako normální soutěžící a organizátor vydá pouze informační pokyn který je pak zveřejněn společně s výsledky. V tuto chvíli již pracujeme na rozšíření které výsledky zaznamená a ukáže teoretické výsledky tj. jako by byly týmy soutěžní a druhý sloupec výsledků, kdy jsou týmy nesoutěžní).
To zda se budou nebo nebudou reflektovat jejich výsledky záleží hlavně na předem dané podmínce, kolik týmů může nastoupit do soutěže za jednu instituci, aby podmínky pro všechny instituce byly rovné a všechny instituce, rozumějte školská zařízení, měla stejnou šanci na vítězství v soutěži.
S pozdravem
Klára Brázdilová, Hynek Pavlacký -
Lenka ŠevčíkováHost
Hezký den.
Všem soutěžícím děkuji jménem komise za odpovědi na otázky a porotcům za spolupráci.Komise rozhodla takto:
Obor: 01 matematika a statistika
1. místo: Marek Kozumplík – Matematické funkce
postup do celostátního kola
2. místo: Matouš Cimala – Zobrazování Lobačevského geometrie
doporučeno do licitačního kolaobor: 18 informatika
1. místo: Ondřej Budín – Cesta k IPv6-only síti SŠ-COPT Kroměříž
postup do celostátního kola
2. místo: Klára Brázdilová, Hynek Pavlacký – Systém pro debatní soutěže formátu Verbattle
3. místo: Přemek Janda – Webový systém Hvězdárny Zlín
4. místo: Radim Čech – Tournament Manager
-
-
AutorPříspěvky