WA1
Z OI wiki
|
|
Info o předmětu
- Přednášející: Ing. Martin Klíma, Ph.D.
- Cvičící:
Pravidla předmětu
Studijní materiály
Semestrální práce
Zkoušky
Zkouška 20.1.2012
Zkouška 20.1.2012
Rozřazovací test (musite mit 6spravne z 10b, opravujete cizi test, doporuciji modre propisovacky s sebou a nebudte svine ;-) ):
1) Vyberte co platí o clonování v php(shallow copy pomoci __clone())
2) Co platí o javascriptu (vyvolává akce, odchytává akce, přidává odebírá listenery...) neplati: manipulace se soubory na disku, manipulace s kamerou ci mikrofonem
3) AJAX stav aplikace se udrzuje v DOMu, ale je lespi ho zalohovat na serverove strane
4) server s rozsirenim CGI sdileni operacni pameti je nemozne, jelikoz kazdy skript bezi jako samostatny proces
5) CSS sirka (plati pro jakykoliv rozmer) udana v % se pocita z absolutne vypocitane hodnoty sirky primeho predka
6) type hinting pouze v argumentu metod
Hlavni test (max 16b):
1) Basic access authentication jmeno:heslo zakodovane v BASE64 zakodovane ale nezasifrovane (zadna MD5, to je DIGEST) NEnahrazuje prihlasovani pomoci cookies (tj. prihlaseni, odhlaseni, skladovani udaju o prihlasenem uzivateli) - asi proto ze neumime odhlasit uzivatele jinak nez zavrenim prohlizece
2) MYSQL MyIsam nema transakce InnoDB ma transakce lze propojit tabulky ruznych typu lze mit jine kodovani v ruznych sloupeckach jedne tabulky (v db)
3) alokace pamtei v PHP programator se o ni nemusi starat o alokaci pameti se stara interpretr
4) kde se posílají Cookie pri kazdem HTTP dotazu v hlavicce HTTP dotazu
5) konstanty v PHP a jejiech viditelnost (DEFINE, const,....)
6) jakym atributem se daji sifrovat data z formulare nedaji (byly tam fejkove moznosti jako secure='secure', secured='secured', atd)
Implementační (9 bodů)
Implementujte MVC architekturu - formular s policky jmeno a prijmeni - na zacatku zobraz prazdne - predvypln pokud uzivatel zadal nejake hodnoty, ale neproslo to validaci (validace je jmeno ma delku alespon tri znaky) - uspesne validovana data ulozte do db metodou DB::save(jmeno, prijmeni), kterou si ale musite sami implementovat (neresil presne nazvy metod, jen obecne abyste vedeli, kdy co pripojit, napsat, ze tady by to chtelo osetrit, kdyz se nepovede pripojeni k db...) - javascriptem osetrete, ze formular nepujde odeslat kdyz jmeno bude kratsi jak 3 znaky zretelne oznacte ktera cast je M, ktera V, ktera C
Ustni
oblibene temata - cachovani ve Smartym (sablony) - web proxy (taky cachovani)
temata - box model v CSS - konflikty v CSS (kdo ma prednost pred kym, doporucuji Macikovy slidy ze cviceni na CSS) - DOCTYPE, DTD, XML - IP, TCP, UDP, HTTP - abstraktni databazova vrstva - sql injection, request forgery - ...
Zkouška 18.1.2012
Rozřazovací test:
1) Vyberte co platí o clonování v php(shallow copy pomoci __clone())
2) Co platí o javascriptu(vyvolává akce, odchytává akce, přidává odebírá listenery...)
3) Co platí o odchytávání akcí
Hlavní test:
1) Kde probíhá validace ajaxu(na serveru, u clienta, neni potřeba atd...)
2) Které z následujících věcí jsou hrozba pro php (dával tam názvy neexistujících tipu SQL influence nebo Cross side script forgery)
3) Vyberte co platí o alokaci paměti v php
4) Otázka na práci php se soubory 1
5) Otázka na práci php se soubory 2
6) Popis zabezpečení Digest
7) ...
Implementační (9 bodů)
Implementujte v model view a controller pro vytahování dat z tabulky people (id firstname lastname) view mají být 2 jedno pro zadání křestního jméno podle kterého chceme vyhledávat a druhé pro zobrazení výsledků
Zkouška 4.1.2012
Moc si toho už nepamatuji, kdyžtak doplňte... --Hanx 6. 1. 2012, 17:49 (UTC)
Vstupní test ke zkoušce - 10 zaškrtávacích odpovědí, žádná nebo právě jedna správná, pro postup nutno 6 bodů z 10. Otázky byly poměrně náročné na pochopení významu (např. dvojitý zápor apod.)
Nepamatuji si přesně obsah, ale byl to víceméně průřez všemi přednáškami na základní věci. Možná jsem něco z toho napsal k písemnému testu...
Písemný test - zaškrtávací odpovědi, žádná, jedna nebo až všechny správné, pro postup nutno 15 bodů z 25 ; některé otázky bylo nutné napsat/nakreslit a poslední otázka byla implementační.
Testové otázky: 1) Web Proxy -> Pracuje na aplikační vrstvě 2) Smarty implementuje -> Pouze View 3) Co je nutné, aby mohlo dojít k XSRF útoku -> Uživatel navštíví v jednom prohlížeči v tomto pořadí: napadená stránka, útočníkova stránka -> Napadená stránka spoléhá pouze na ověření pomocí Cookies/Sessions -> Klient musi mit platnou cookie s identifikatorem session napadene stranky 4) Dotaz na implementaci komunikace PHP - DB -> Pomocí dynamicky linkované knihovny nebo přikompilovaným modulem 5) Co zajišťuje DNS -> převod textového jména na IP adresu -> převod IP adresy na textové jméno 6)... Dále pak nějaké otázky na PHP a JavaScript Psané otázky: 1) Co je pseudotřída v CSS + alespoň jeden příklad 2) Co je pseudoelement v CSS + alespoň jeden příklad 3) Vysvětlete MVC v realizaci Front Controlleru + popište význam Modul a View Implementační otázka: Implmentujte zpracování formuláře (vstup: Jméno, Příjmení, Submit). Předpokládejte, že máte metody: * validuj($jmeno, $prijmeni) - kontroluje validitu vstupu, return boolean * save($jmeno, $prijmeni) - provede bezpečné uložení do DB Kontrolujte vstup formuláře, v případě špatného vyplnění formuláře se formulář zobrazí znovu se zadanými hodnotami. Pokud dojde k uložení, informujte o úspěšném uložení (k dispozici na thankyou.html) *zde bylo potřeba hlavně hlídat, aby jsme nevypisovali neošetřené vstupy (htmlspecialchars)...
Ústní zkouška - Pokud jste prošli písemným testem, dostali jste otázku (já za 5b - udržovací, zda si zasloužím za C). Pokud jste odpověděli správně (a chyběl vám bod do lepší známky), mohli jste si zkusit vzít další za 5b (získal jsem tak lepší známku, v případě neúspěchu bych byl na nule).
Otázku vybíral tak, že kouknul na přehled přednášek a vypral nějaké téma, někdo si téma i mohl vybrat...
Pokud byste ale měli z testu např. 17b a z ústní -5b >> 12b, zkoušku jste neudělali. Takže se vlastně výsledky z písemné a ústní sečetly a museli jste mít 15 a více bodů...