Šios svetainės tikslas suteikti galimybę vartotojui rašyti savo užrašus, juos išsaugoti, perskaityti bei redaguoti. Ši svetainė realizuota iš serverio pusės „Node.js“ pagalba, o iš kliento pusės pasitelkiant „EJS“ (Embedded JavasScript). Užrašų išsaugojimas atliekamas dviems būdais: lokaliai išsaugojamas užrašų rinkinys arba prisijungus/užsiregistravus svetainėje naudojama „PostgreSQL“ duomenų bazė. Plačiau bus aprašyta kekvieno punkto realizacija.
„Node.js“ yra serverio JavaScript vykdymo aplinka. Leidžianti kurti internetines web aplikacijas. Kartu su šia platforma yra naudojami ir jos NPM (Node Package Manager) moduliai, siekiant palengvinti kodavimą. „Express“ modulis, supaprastina Node.js aplinkos funkcionalumą keliomis kodo eilutėmis, kas yra daug greičiau ir efektyviau. „Method-override“ modulis leidžia naudoti ne tik pagrindinius HTTP metodus „GET“ ir „POST“, bet taip pat ir „PUT“, bei „DELETE“, kur kitu atveju šių nepalaikytu ir nebūtų galima jų naudoti.
„Pg“ modulis leidžia prijungti svetainę prie „PostgreSQL“ duomenų bazės ir atlikti jos užklausas. „Bcrypt“ modulis skirtas užšifruoti kliento slaptažodžius, prieš išsaugojant juos duomenų bazėje tam, kad kiti asmenys negalėtų pasinaudoti šiais duomenimis.
„Express-session“ modulis leidžia sukurti serveyje slapukus, leidžiančius klientui neprisijungti prie savo paskyros, jei šis išjungtų naršyklę. „Mano tinklaraštijos užrašai“ sesija trunka 30 minučių, po kurių vartotoją automatiškai atjungs nuo savo paskyros.
„Passport“ modulis skirtas perduoti kliento prisijungimo duomenis į sesiją tam, kad nereikėtu iš naujo vesti prisijungimo vardo ir slaptažodžio tol kol sesija truks. „Caesar-encrypt“ modulio dėka kliento užrašai yra šifruojami privatumo tikslu.
„dotenv“ modulis paslepia visus serverio svarbius slaptažodžius, tokius kaip sesijos saugos kodas, duomenų bazės prisijungimo duomenis, tam, kad kiti negalėtų pasinaudoti šiais duomenimis ir pasisavinusią informaciją blogiems tikslams.
„EJS“ modulis arba „Embedded Java Script“ yra šablonų variklis leidžiantis sukurti html puslapius su minimaliu kodu, bei gali įterpti duomenis į šį html puslapį kliento pusėje, kitaip tariant dinamiškai atvaizduoja duomenis bei leidžia juos įterpti su JavaScript.
Ši funkcija realizuota taip, kad tikrinama ar vartotojas nėra prisijunges į sesiją, jeigu ne tada naudojamas šis metodas. Sukūriamas kintamasis ir vartotojui suvedus atitinkamus duomenis į laukelius, šie apdrojami ir įdedami į užrašų rinkinį.
Vėliau šis rinkinys yra atvaizduojamas, jį galima peržiūrėti, redaguoti ir ištrinti. Kadangi šis rinkinys yra saugomas lokalioje atmintyje, tam kad neapkrauti atminties, šie užrašai yra pašalinami kas 20 valandų.
„PostgreSQL“ duomenų bazė naudojama išsaugoti kliento prisijungimo vardą bei slaptažodį, tam, kad kitą kartą prisijungus šioje svetainėje jis rastu savo užrašus. Šie užrašai priskiriami vartotojo ID ir pagal tai vartotojas gali kurti, peržiūrėti ir trinti savo paties užrašus. Sėkmingai prisijungus ar prisiregistravus susikuria sesija, kuri leidžia automatiškai prisijungti prie šios web aplikacijos jei netyčia išjungtų naršyklę ar skirtuką.
Taip pat svarbu paminėti, kad „Passport“ modulis naudojamas serializuoti ir deserializuoti vartotoją. Serializacija skirta tam, kad būtų saugomi vartotojo duomenys seanso metu, taip pat sprendžia kokie duomenys turi būti saugomi. Deserializuoti tam, kad serveris turėtu prieigą prie vartotojo duomenų.
Sėkmingai užsiregistravus slaptažodis yra užšifruojamas „Bcrypt“ moduliu „Hash“ pagalba, tai yra vietoje slaptažodžio „123456“ gaunamas simbolių rinkinys, didesniam saugumui šis rinkinys yra vėl užšifruojamas bcrypt pagalba ir gaunamas kitas simbolių rinkinys, šis vėl šifruojamas ir taip atliekama 12 kartų, kuo didesnis kartų kiekis tuo ilgiau užtruktų šį slaptažodį iššifruoti.
Kaip matome slaptažodį „123456“ galima iššifruoti neužtrukus nė sekundei, bet jeigu tai butų užšifruota bcrypt pagalba, matome, jog užtruktų labai daug metų.
Galiausiai patys užrašai yra šifruojami cesario šifru, tai yra kekviena abecelės raidė perstumiama per tam tikrą skaičių. Pavyzdžiui jei tas skaičius būtų 5, tai raidė „A“ butū perstumta per 5 abecelės pozicijas ir gautusi raidė „E“, tai yra labai paprasta ir lengva užšifruoti ir dešifruoti. Šie abu moduliai „bcrypt“ ir „caesar-encrypt“ užtikriną stiprų vartotojo duomenų saugumą.
Taigi ši svetainė užtikrina kliento duomenų saugumą, leidžianti kurti, žiūrėti ir ištrinti savo užrašus.