Ólafur Sverrir Kjartansson, osk@hi.is
Miðvikudaginn 25. apríl kl. 9:00
- 60% verkefni
- Fjögur bestu einstaklingsverkefni gilda 7,5% hvert
- Hvort hópverkefni gildir 15%
- 40% lokapróf
- Einfaldara í uppsetningu en lokaprófa í vefforritun I
- Sex spurningar
- „Forritun“ og skrifuð svör við spurningum í bland
- Hver spurning er 20%
- Próf í heild sinni er 120%
- Yfir 100% og fullt hús fæst fyrir lokaprófshluta einkunnar
- Ekki þannig að fimm bestu spurningar gilda, svo borgar sig að reyna við allar
- Af sex spurningum munið þið hafa séð þrjár
- Inntak mun haldast en orðalag mun e.t.v. breytast eitthvað
- Gefnar verða upplýsingar fyrir þau API sem nota þarf
- Fyrir séðar spurning er þó einhverju sleppt
- T.d. hvernig middleware lítur út og þær aðgerir á
req
ogres
sem gæti þurft að nota
- EventEmmiters og streams
- Git skipanir
- Flux og redux
- Testing, webpack, CMS
Fyrir tvær helstu öryggishættur vefforrita (#1 og #2 á lista) og tvær aðrar öryggishættur af eigin vali á OWASP top 10 lista 2017, lýsið:
- Í hverju hættan felst og áhrifum hennar
- Hvað er hægt að gera til að koma í veg fyrir hættu
Þú færð það verkefni að setja upp auðkenningarkerfi á vef, bæði innskráningu og nýskráningu. Ákveðið hefur verið að nota express og passport kóðasafnið, postgres grunnur mun sjá um að halda utan um notendur. Við nýskráningu notanda verður að gefa upp notendanafn og lykilorð en valkvæmt er að gefa upp netfang.
Hverju þarf að huga að við nýskráningu? Bæði þegar kemur að birtingu til notanda og flæði gagna frá notanda til gagnagrunns.
Skrifið EJS sniðmát fyrir nýskráningu ef gefið er að eftirfarandi gögn eru send inn:
username
, notendanafn sem notandi gaf uppemail
, netfang sem notandi gaf uppposted
, boolean breyta sem ertrue
ef búið er aðPOST
a formisuccess
, boolean breyta sem ertrue
ef notandi var búinn til, annarsfalse
. Aðeins sett efposted = true
errors
, fylki af villum sem komu upp
Hvað þarf að gera til að tryggja að ákveðnar slóðir séu aðeins aðgengilegar innskráðum notendum? Skrifið vísi að middleware sem tryggir þetta.
Koma á þessu verkefni upp á Heroku, að hverju þarf að huga til þess að það gangi?
Í mörgum af þeim forritum sem við höfum skrifað í vor höfum við notað ósamfasa (asynchronous) kóða. Í JavaScript höfum við þrjár leiðir sem eru mis vel studdar til að skrifa þennan kóða.
Nefnið og lýsið hverri leið. Hverjir eru kostir og gallar þeirra?
Gefið dæmi um hverja leið með einföldu kóðadæmi.
- The final exam will be in icelandic and english
- Three of six questions are given beforehand
- Each question is 20% and everything over 100% gives full credit for the exam part of the final grade
For the two most serious and two other security threats of own choice from the OWAS top 10 list 2017, describe:
- What the threat entails and its impact
- Ways to prevent the threat
You are tasked with the project of setting up an authentication system on the web, both for login and registration. It will use express and the passport library. A postgres database will store the users data. When registering users, username and passport must be provided but email is optional.
What do you need to consider when setting up the registration? Both when it comes to displaying data to the user and the flow of data from the user to the database.
Write an EJS template for signup, it is provided with the following data:
username
, username given by useremail
, email given by userposted
, boolean variabla that istrue
if the form has beenPOST
edsuccess
, boolean variable that istrue
if the user was created, otherwisefalse
. Only set ifposted = true
errors
, array of errors that have occured
What is needed to secure specific routes so that they are only available to logged in users? Write an implementation of a middleware that ensures this.
The project will be hosted on Heroku. What needs to be done to make that happen?
In many of the programs we've written this spring, we have used asynchronous code. In JavaScript there are three ways that are mis well supported of writing this code.
Name and describe each way. What are the pros and cons of each?
For each give a short code example.