Hlavní stránka Fóra Forum pro soutěžící SOČ Obhajoby – Vysočina 42 – Kraj Vysočina – obor: 18

  • Toto téma je prázdné.
Aktuálně je na stránce zobrazeno 14 vláken odpovědí
  • Autor
    Příspěvky
    • #21860 Odpovědět
      Kamil Svoboda
      Host

      Obor: 18 – Informatika

      Porota:

      Ing. Zdeněk Kneslík (OAHŠ Třebíč)
      Ing. Dušan Kolář (Mann-Hummel)
      Ing. Jan Mittner, Ph.D.

    • #21903 Odpovědět
      Kamil Svoboda
      Host

      Matěj Brožek

      Střední průmyslová škola Třebíč

      Sociální síť Branch

    • #21904 Odpovědět
      Kamil Svoboda
      Host

      Jindřich Dítě

      VOŠ a SPŠ Žďár nad Sázavou

      Zabezpečení a sledování přípojného bodu k internetu

    • #21905 Odpovědět
      Kamil Svoboda
      Host

      Jáchym Mierva

      Biskupské Gymnázium Žďár nad Sázavou

      Vývoj grafického uživatelského rozhraní v Pythonu

    • #22876 Odpovědět
      Jan Mittner
      Host

      Dobrý den,
      na začátek chci všem soutěžícím poděkovat za zajímavé práce a ocenit vaši činnost ve svém volném čase.

      Dotazy:

      Jindřich Dítě
      – Co vnímáte jako hlavní vlastní přínosy vaší práce? Tedy, co jste musel vymyslet a navrhnout sám a co bylo převzaté?
      – Jeden z cílů práce je “Zpracovat řešení autorizování a sledování přístupu uživatelů k internetu”. Jak konkrétně jste naplnil tento cíl z hlediska “autorizování”? V práci jsem se o autorizaci uživatelů moc nedočetl, nebo jsem to přehlédl.
      – Máte ukázku grafického zobrazení logů v administrátorském rozhraní?

      Jáchym Mierva
      – Při implementaci hry Pampuch, jaké byly největší problémy a výzvy, na které jste narazil? Co Vám zabralo nejvíce času?
      – Využil jste při vytváření knihovny nějaké návrhové vzory (Design Patterns)?

      Matěj Brožek
      – V části o PHP píšete, že “sémantika je velmi specifická, místy až nepřehledná”. Můžete konkrétně na příkladu vysvětlit, jak je toto myšleno?
      – V části týkající se bezpečnosti píšete o ukládání hesel. Je tomu opravdu tak, že pokud do databáze uložím pouze hash (otisk) hesla, není možné získat původní heslo zpět?
      – Proč jste si vytvářel vlastní MVC framework a nepoužil některý z existujících a vyzkoušených?

    • #22915 Odpovědět
      Ing. Zdeněk Kneslík
      Host

      Pánové, odpovězte mi prosím všichni tři na tuto otázku:
      Proč myslíš, že právě Ty bys měl se svou prací postoupit do dalšího kola soutěže.

      Děkuji

    • #22976 Odpovědět
      Lukáš Semerád
      Host

      Dobrý den,

      také děkuji za zajímavé práce. Neměl jsem mnoho času na prostudování, tak doufám, že se svými dotazy neopakuji.

      Jáchym Mierva
      – Uvažoval jste o přepisu alespoň některých částí do jazyka C/C++? Jak náročná by tato změna byla?

      Jindřich Dítě
      – Jaké informace o provozu v síti konkrétně zaznamenáváte?

      Matěj Brožek
      – Máte vytvořen ER diagram uložení a propojení dat ve své databázi? Pokud ne, popište alespoň, jaké tabulky jste vytvořil.

      Lukáš Semerád
      náhradní člen komise
      FIT VUT v Brně / Gymnázium Třebíč

    • #23021 Odpovědět
      Monika Peroutková
      Host

      Změna sestavy poroty: místo Ing. Koláře je porotcem Ing. Lukáš Semerád z Gymnázia Třebíč.

    • #23089 Odpovědět
      Matěj Brožek
      Host

      Dobrý den,
      děkuji za dotazy. Odpovědi očísluji.

      • Specifická až nepřehledná sémantika je v PHP problém názvu funkcí a použití jejich parametrů. V jednom případě se u funkcí jedná o zkrácení názvu jejího úkonu, v druhém případě je to zase obdobné, akorát s použitím podtržítka ( strpos() x str_replace() atd..). Protože byl PHP vyvíjen v Izraeli, najdeme zde funkce typu jdtojewish(), převádějící Juliánský kalendář na Židovský, nebo hebrev() funkci, převádějící hebrejský text pro čtení zleva doprava. Tyto funkce se samozřejmě mohou hodit, ovšem nastává otázka, mají-li být součástí základní knihovny.
      • Otisk hesla (hash) nelze přepočítat zpět na původní heslo. Je to jen jakýsi „otisk“ původního hesla, vypočítaný hashovacím algoritmem. Jsou ale způsoby, jak heslo dostat. Nejznámější z nich je asi Bruteforce algoritmus, který zkouší všechny možné varianty hesel a výsledný hash porovnává, dokud nenajde shodu. Druhým útokem je tzv. Dictionary attack, který využívá znalosti útočníků o již prolomených hesel. Prolomíme-li heslo „ahoj“ tak víme, který hash k němu patří. Takovou znalost si uložíme do nějakého slovníku, odtud název. Narazíme-li pak na stejný hash, nemusíme nic luštit, víme, že dané heslo je „ahoj“. Proto je třeba mít kvůli oběma případům velmi silné heslo, nejlépe kombinaci velkých i malých písmen, čísel a speciálních znaků.
      • Vlastní MVC framework byl hlavně pro zlepšení mých dovedností a také pro přehlednost. Vytvořením vlastních funkcí a systému jsem si udělal přehlednou mapu kódu a vím, o co se která část aplikace stará. Na trhu je samozřejmě mnoho řešení (Laravel, Symphony) nabízející velmi pokročilé práce se škálou funkcí. Na tyto systémy bych se chtěl určitě také zaměřit a využít jich při práci na složitějších projektech. Na druhou stranu, pilováním vlastního frameworku mohu docílit rychlejšího a jednoduššího vytváření a rozšiřování aplikací, jelikož se budu v systému orientovat velmi lehce.
    • #23094 Odpovědět
      Matěj Brožek
      Host

      Dobrý den,

      myslím si, že moje práce nabízí jak praktickou funkčnost a použití, tak ukázky vývoje složitější aplikace pomocí vlastního systému a metod. Tento projekt může sloužit jako demonstrace vývoje webové aplikace od A do Z, čili počínaje grafickým návrhem až po komplexní řešení návrhu kódu jak na front-endu, tak na back-endu. Osobně jsem si projektem osvojil znalosti full-stack programování s balíčkem „LAMP“ a velmi rád bych moje znalosti předával dál, bavilo by mě o projektu debatovat a přednášet.

    • #23103 Odpovědět
      Jindřich Dítě
      Host

      Co vnímáte jako hlavní vlastní přínosy vaší práce? Tedy, co jste musel vymyslet a navrhnout sám a co bylo převzaté?

      Převzatá byla, upřímně věřím, pouze konfigurace samotného proxy serveru, již bylo nutno použít pro zajištění kompatibility se zbytkem infrastruktury (a ve výsledku se ani příliš neodlišovala od výchozí). Takovým hlavním přínosem mé práce z mého pohledu jsou skripty na zpracování generovaných logů a jejich následné zpracování, které představují relativně výrazné zlepšení, umožňujíc jednoduše proaktivně sledovat, co se v síti děje, namísto současného v podstatě pouze reaktivního manuálního řešení problémů. Druhým významným přínosem je poté kontejnerizace celého systému, která značně zjednodušuje administraci a eventuálně může relativně jednoduše umožnit prostřednictvím nějakých orchestračních nástrojů stylu kubernetes i zrcadlení celého systému pro zajištění běhu i v nepříznivých situacích (např. minulý pátek došlo v serverovně patrně výpadkem napájení k výpadku serveru a poškození RAID řadiče, čímž by za normální situace byla celá škola odříznutá od internetu do doby, než bude manuálně zprovozněn náhradní hardware. Orchestrační řešení by teoreticky mohlo umožnit přesměrovat všechen síťový provoz přes sekundární instanci proxy serveru běžící na hardware na druhém pracovišti školy, čímž by sice došlo k určitému omezení propustnosti sítě, ale celkový výpadek by se omezil na několik minut maximálně).

      Jeden z cílů práce je “Zpracovat řešení autorizování a sledování přístupu uživatelů k internetu”. Jak konkrétně jste naplnil tento cíl z hlediska “autorizování”? V práci jsem se o autorizaci uživatelů moc nedočetl, nebo jsem to přehlédl.

      Problematika autorizace byla v práci poněkud zanedbána, jelikož sestavovaný systém z pohledu autorizace příliš náročný. V rámci oprávnění k přístupu ke zdrojům mimo síť školy nejsou uživatelé nijak rozdělováni, a samotné zdroje jsou poté vždy také pouze globálně povoleny nebo blokovány. Proxy server tedy pouze ověřuje, zda pro uživatele snažícího se navázat spojení existuje účet s danými přihlašovacími údaji (tj. pouze vyžaduje autentizaci), a ověřuje, že stránka je přístupná (porovnáním s blacklistem). Pro přístup k rozhraní pro vizualizaci výstupů je poté zase vyžadována autentikace prostřednictvím nezávislých přihlašovacích údajů. („čistá“ autorizace ve smyslu správy oprávnění náležejících jednotlivým uživatelským identitám tedy nikde prováděna není).

      Máte ukázku grafického zobrazení logů v administrátorském rozhraní?

      Ukázku bohužel nemám, jelikož původní plán počítal s testovacím nasazením systému po dobu jednoho nebo dvou týdnů na učebně, kdy by byly odladěny poslední problémy a otestována funkčnost, k tomuto ovšem nebyla příležitost. Všech několik málo set řádků kódu sloužícího ke generování výstupů je sice napsáno, ale nikdy neběžely, na straně JavaScriptu je to obdobně. I v případě existence ukázkových screenshotů bych se ovšem rád vyvaroval jejich zveřejňování z důvodu ochrany osobních dat uživatelů zachycených v grafech.

    • #23159 Odpovědět
      Matěj Brožek
      Host

      Dobrý den,

      odkaz na ER diagram je zde

      Struktura databáze je v principu jednoduchá – V tabulce „uzivatele“ jsou základní informace o uživatelech včetně přihlašovacích údajů (heslo samozřejmě v hashi).
      Tabulka „friendsrequests“ je na uchování žádostí uživatelů o přátelství, je zde id uživatele odesílajícího žádost a id příjemce.
      Tabulka „posts“ obsahuje informace o příspěvcích. Obsahuje id autora ve formě cizího klíče.
      „friendslist“ obsahuje informace o vztazích mezi uživateli, konkrétně kdo je s kým přítel.
      „messages“ je tabulka, pomocí které je realizováno posílání zpráv. Je to ta „nedokončená“ sekce, kde by se hodilo posílání zpráv v reálném čase, které bohužel s mými nástroji nešlo realizovat.
      „komentareprispevku“ obsahuje veškeré komentáře k příspěvkům, místo id by šlo data řadit podle data odeslání jako primární klíč.
      „fotogalerieprispevku“ je tabulka obsahující odkazy na fotografie obsažené v příspěvcích. Protože jich může být více, je na ně nutna samostatná tabulka.

    • #23176 Odpovědět
      Jindřich Dítě
      Host

      Proč myslíš, že právě Ty bys měl se svou prací postoupit do dalšího kola soutěže.

      Na rozdíl od mnoha jiných prací z let minulých i současných se moje práce zabývá konkrétním reálným problémem a jejím cílem je přímá nasaditelnost v praxi, a k dosažení těchto cílů využívá v plné míře dostupná průmyslová řešení včetně některých absolutních novinek, nijak se nesnaží o v praxi zbytečnou, jakkoliv edukativní reimplementaci nebo opětovné vynalézání již existujících systémů. Samotné téma kontejnerizace je navíc v praxi velice oblíbené (např. na mezinárodní konferenci DevConf.CZ 2020 mu byla věnována celá kategorie přednášek), a pokud je mi známo, nebylo v rámci SOČ ještě kdy nějak rozsáhleji zpracováno.

    • #23199 Odpovědět
      Jindřich Dítě
      Host

      Jaké informace o provozu v síti konkrétně zaznamenáváte?

      Zaznamenávány jsou všechny přístupy na zdroje mimo vnitřní síť školy, u každého záznamu je poté uloženo uživatelské jméno, adresa přistupovaného zdroje, datum a čas, velikost odpovědi (v bytech), a další informace. Z těchto dat poté generuji grafy celkového vytížení sítě, přehled nejaktivnějších uživatelů, nejnavštěvovanějších domén, ve vedlejších tabulkách je poté možno seřadit si a vyhledávat uživatele a pro každého si zobrazovat jeho kompletní přehled navštěvovaných domén (včetně opět statistik navštěvovanosti), nebo si naopak seřadit a vyhledávat domény a pro každou si zobrazit uživatele, jež ji využívají.

    • #23290 Odpovědět
      Ing. Zdeněk Kneslík
      Host

      Ještě jednou dobrý den,

      jako předseda komise mám tu čest vyřknout naše společné hodnocení:

      Pan Brožek velmi dobře a věcně správně odpověděl na všechny dotazy. Ačkoliv práce není nijak moc inovativní, tak vyžadovala komplexní znalosti a jejich vhodné použití. To student jako jediný jednoznačně prokázal. Bylo by vhodné zapracovat na osobním projevu.

      Pan Dítě dobře odpovídal na otázky. Jeho práce řeší reálný problém, nicméně samotný text práce je natolik slabý, že na první místo ho dát nemůžeme. Taktéž ukázky reálných výstupů zcela chybí, a to i po zcela jasně cíleném dotazu. Tento student má asi největší potenciál, ale díky uvedenému nemůže být vítězem. Jeho práce by musela být upravena a doplněna.

      Pan Mierva se nezúčastnil diskuze, což jeho hodnocení sráží dolů, byť práce je celkem kvalitní a komplexní. Taktéž jeho projev byl dobrý, ve skupině nejlepší.

      Komise se shodla na následujícím pořadí:
      1. Matěj Brožek, Střední průmyslová škola Třebíč, Sociální síť Branch
      2. Jindřich Dítě, VOŠ a SPŠ Žďár nad Sázavou, Zabezpečení a sledování přípojného bodu k internetu
      3. Jáchym Mierva, Biskupské Gymnázium Žďár nad Sázavou, Vývoj grafického uživatelského rozhraní v Pythonu

      Do licitace nedoporučujeme žádnou práci.

      Všichni členové komise oceňují vaši snahu udělat něco navíc. Přejeme vám do dalšího studia mnoho úspěchů a zdar v osobním životě.

Aktuálně je na stránce zobrazeno 14 vláken odpovědí
Odpověď na téma: 42 – Kraj Vysočina – obor: 18
Informace o uživateli: