WA1
Z OI wiki
(→Zkoušky: pridan termin 20.1.) |
(→Zkouška 20.1.2012: doplneni) |
||
Řádka 34: | Řádka 34: | ||
Rozřazovací test (musite mit 6spravne z 10b, opravujete cizi test, doporuciji modre propisovacky s sebou a nebudte svine ;-) ): | 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()) | + | 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 | + | 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 | + | 3) AJAX |
- | stav aplikace se udrzuje v DOMu, ale je lespi ho zalohovat na serverove strane | + | stav aplikace se udrzuje v DOMu, ale je lespi ho zalohovat na serverove strane |
- | 4) server s rozsirenim CGI | + | 4) server s rozsirenim CGI |
- | sdileni operacni pameti je nemozne, jelikoz kazdy skript bezi jako samostatny proces | + | sdileni operacni pameti je nemozne, jelikoz kazdy skript bezi jako samostatny proces |
- | 5) CSS | + | 5) CSS |
- | sirka (plati pro jakykoliv rozmer) udana v % se pocita z absolutne vypocitane hodnoty sirky primeho predka | + | 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): | Hlavni test (max 16b): | ||
- | 1) Basic access authentication | + | 1) Basic access authentication |
- | jmeno:heslo zakodovane v BASE64 | + | jmeno:heslo zakodovane v BASE64 |
- | zakodovane ale nezasifrovane (zadna MD5, to je DIGEST) | + | 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 | + | 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ů) | Implementační (9 bodů) | ||
Řádka 80: | Řádka 91: | ||
Ustni | Ustni | ||
- | oblibene temata | + | oblibene temata |
- | - cachovani ve Smartym (sablony) | + | - cachovani ve Smartym (sablony) |
- | - web proxy | + | - 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 === | === Zkouška 18.1.2012 === |
Verze z 20. 1. 2012, 21:08
|
|
Info o předmětu
- Přednášející: Ing. Martin Klíma, Ph.D.
- Cvičící:
Pravidla předmětu
Studijní materiály
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 -> jeste jedna odpoved 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ů...