Skip to content

Latest commit

 

History

History
158 lines (93 loc) · 4.87 KB

12.2.lokaprof.md

File metadata and controls

158 lines (93 loc) · 4.87 KB

Fyrirlestur 12.2

Lokapróf

Vefforritun 2 — HBV403G

Ólafur Sverrir Kjartansson, osk@hi.is


Dagsetning

Miðvikudaginn 25. apríl kl. 9:00


Einkunn

  • 60% verkefni
    • Fjögur bestu einstaklingsverkefni gilda 7,5% hvert
    • Hvort hópverkefni gildir 15%
  • 40% lokapróf

Uppsetning

  • Einfaldara í uppsetningu en lokaprófa í vefforritun I
  • Sex spurningar
    • „Forritun“ og skrifuð svör við spurningum í bland

Stig

  • 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

Séðar spurningar

  • Af sex spurningum munið þið hafa séð þrjár
  • Inntak mun haldast en orðalag mun e.t.v. breytast eitthvað

Gefnar upplýsingar

  • 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 og res sem gæti þurft að nota

Efni sem ekki verður spurt um

  • EventEmmiters og streams
  • Git skipanir
  • Flux og redux
  • Testing, webpack, CMS

Spurning – Öryggi

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

Spurning – Express og auðkenning

Þú 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 upp
  • email, netfang sem notandi gaf upp
  • posted, boolean breyta sem er true ef búið er að POSTa formi
  • success, boolean breyta sem er true ef notandi var búinn til, annars false. Aðeins sett ef posted = 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?


Spurning – Asynchronous aðgerðir

Í 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.


Final exam in english

  • 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

Question – Security

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

Question – Express and authentication

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 user
  • email, email given by user
  • posted, boolean variabla that is true if the form has been POSTed
  • success, boolean variable that is true if the user was created, otherwise false. Only set if posted = 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?


Question – Asynchronous code

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.