Sananen Web-sovellusten tietoturvasta

Tietoturva on tietojen ja tietojärjestelmien suojaamista tarkoitukselliselta tai tahattomalta uhkaamiselta, kuten tietomurroilta, haittaohjelmilta ja tietovuodoilta. Se kattaa fyysiset, tekniset ja organisatoriset toimenpiteet varmistaakseen tietojen luottamuksellisuuden, eheyden ja saatavuuden, sekä turvallisen tiedonkäsittelyn ja tietoliikenteen. Tietoturva on kriittinen osa modernia liiketoimintaa ja yksityishenkilöiden tietojen suojaa digitaalisessa maailmassa.

Tietoturvan ja testaamisen huomioiminen omissa kehitettävissä Next.js- ja React-websovelluksissa on erittäin tärkeää varmistaaksesi sovelluksen luotettavuuden ja tietojen suojan. Tässä on joitain keskeisiä vinkkejä, miten voit huomioida nämä näkökohdat:

Tietoturva:

  1. Päivitä riippuvuudet: Seuraa säännöllisesti projektisi riippuvuuksia ja pidä ne ajan tasalla, sillä vanhentuneet kirjastoversiot voivat sisältää tunnettuja haavoittuvuuksia.
  2. Suojaa reititys: Varmista, että sovelluksen reititys on turvallinen ja estää ei-toivotut reitit tai ohjaamiset, jotka voivat altistaa arkaluonteisia tietoja.
  3. Käsittelytietojen suojaaminen: Älä tallenna arkaluonteisia tietoja asiakaspäänäkymään (client-side), vaan käsittele ne turvallisesti palvelinpuolella (server-side) ja huolehdi asianmukaisista käyttöoikeuksista.
  4. Tietokantaturvallisuus: Varmista, että tietokantaan tallennetut tiedot ovat suojattuja, ja käytä valmistautuneita lausekkeita (prepared statements) estääksesi injektiot.
  5. HTTPS: Käytä aina HTTPS-yhteyttä varmistaaksesi tietojen salauksen välityksellä ja estääksesi mahdollisia väärinkäytöksiä.
  6. Autentikointi ja valtuutus: Käytä vahvaa autentikointia käyttäjien tunnistamiseen ja valtuutusta pääsynhallintaan, jotta vain oikeutetut käyttäjät pääsevät käsiksi tiettyihin resursseihin.
  7. XSS-suojaus: Estä ristiinsivustuskohtaiset skriptit (cross-site scripting, XSS) varmistamalla, että kaikki käyttäjän syötteet käsitellään asianmukaisesti ja puhdistetaan ennen näyttämistä.
  8. CSRF-suojaus: Varmista, että sovelluksesi on suojattu ristiinsivustaisilta pyynnöiltä (cross-site request forgery, CSRF) käyttämällä tokeneita ja tarkastamalla pyyntöjen alkuperä.
  9. Salasanojen suojaus: Tallenna salasanat ja muut arkaluonteiset tiedot tietokantaan vain tiiviisti suolattuina ja hashattuina, mieluiten käyttäen yksisuuntaista salausalgoritmia, kuten bcrypt.
  10. Tietojen validointi: Tarkista käyttäjien antamat syötteet, jotta voidaan estää epäkelvot tai haitalliset tiedot ennen niiden tallentamista tai käsittelyä.
  11. Tietojen minimointi: Säilytä vain välttämättömät ja tarpeelliset tiedot ja poista tai anonymisoi vanhentuneet tai tarpeettomat tiedot.

Testaaminen:

  1. Yksikkötestaus: Tee yksikkötestejä React-komponenteille ja Next.js-sivuille varmistaaksesi niiden toimivuuden ja estääksesi virheiden leviämisen tuotantoympäristöön. Kirjoita yksikkötestejä, jotka kattavat kaikki sovelluksen komponentit ja funktiot varmistaaksesi, että ne toimivat oikein.
  2. Testauskirjastot: Käytä suosittuja testauskirjastoja, kuten Jest ja React Testing Library, helpottamaan testien kirjoittamista ja suorittamista.
  3. Integraatiotestaus: Testaa eri moduulien ja komponenttien välistä yhteistoimintaa integraatiotesteillä.
  4. Selaintestaus: Automaattiset selaintestit, kuten käyttöliittymätestaus (UI testing) ja toiminnalliset testit, voivat auttaa tunnistamaan selainkohtaisia ongelmia.
  5. Suorituskykytestaus: Testaa sovelluksen suorituskykyä, jotta voit havaita mahdolliset pullonkaulat ja tehostaa sen toimintaa.
  6. Turvallisuustestaus: Suorita tietoturvaan keskittyviä testejä, kuten haavoittuvuustestejä (penetration testing) ja tietojenkalastelutestejä (phishing testing), löytääksesi mahdolliset tietoturvariskit.
  7. Selainyhteensopivuustestaus: Varmista, että sovelluksesi toimii sujuvasti eri selaimissa ja selainversioissa suorittamalla kattavaa selaintestaus.
  8. API-testaus: Testaa tietojen siirtoa palvelimelta asiakkaalle ja päinvastoin varmistaaksesi, että API:t toimivat oikein.
  9. Mocking: Käytä mockeja simuloidaksesi tietokantakyselyjä ja ulkoisia rajapintoja testaamisen helpottamiseksi.
  10. Testaustuotteen automatisointi: Automaatisoi testien suorittaminen jokaisen koodimuutoksen jälkeen, jotta nopeasti havaitaan ja korjataan mahdolliset ongelmat.

Tietoturvan ja testaamisen jatkuvuus:

  1. Kooditarkistukset: Suorita säännöllisiä kooditarkastuksia ja tarkista, että sovelluksen kehitystiimillä on yhtenäiset käytännöt ja standardit tietoturvan ja testaamisen osalta.
  2. Haavoittuvuuskorjaukset: Reagoi nopeasti löydettyihin tietoturva-aukkoihin ja haavoittuvuuksiin, ja tee tarvittavat korjaukset mahdollisimman pian.
  3. Tietoturvakoulutus: Kouluta henkilöstöä tietoturvan tärkeydestä ja parhaista käytännöistä sekä testaamisen menetelmistä, jotta he voivat toimia vastuullisesti ja turvallisesti.

Huolellinen tietoturvan ja testaamisen huomioiminen auttaa sinua luomaan luotettavan ja turvallisen Next.js- ja React-sovelluksen, joka vastaa paremmin käyttäjien odotuksiin ja vaatimuksiin.

Näiden toimenpiteiden noudattaminen auttaa varmistamaan, että sovelluksesi on turvallinen ja toimii odotetusti eri ympäristöissä. Muista myös seurata tietoturvauutisia ja päivityksiä, jotta voit vastata nopeasti mahdollisiin turvallisuusuhkiin ja varmistaa sovelluksesi jatkuvan turvallisuuden.

Käytännön harjoittelua ja penetraatiotestausta:

Jyväskylän Ammattikorkeakoulu tarjoaa tietoturvakursseja, joissa harjoitellaan monipuolisesti tietoturva-asioita.

Kyberturvallisuuskurssi oli varsin mielenkiintoinen ja tärkeää tietoa, tässä maailman tilanteessa.
Kurssilla käytiin läpi kattavasti, mitä kyberturvallisuus on ja kuinka voidaan suojautua mahdollisia uhkia vastaan. Yksi varsin mielenkiintoinen tapa oppia kyberturvallisuutta, oli astua hetkeksi hyökkääjän asemaan.

Virtuaalikoneiden avulla, käytiin läpi kuvitteellinen tilanne, jossa tehtävänä oli murtautua Web-palvelimelle. Tämä auttoi ymmärtämään hyvin, miten mahdolliset hyökkääjät voivat käyttää hyväksi php:n ja wordpress lisäosien haavoittuvuuksia. VulnHub-sivustolla, on hyviä esimerkkejä.

Ylen tuottamat “Hakkerin tietoiskut” – lyhytvideosarja on myös hyvä tiedonlähde. Sarjassa kerrotaan (valkohattuhakkeri, Laura Kankaala esittää selkeästi) perusasioita, kuinka verkkorikolliset saattavat yrittää huijata mahdollista käyttäjää Internetissä. Ja kuinka näiltä hyökkäyksiltä ja huijauksilta voidaan suojautua.

Tietoturva IoT-laitteissa:

Kiinnostuin IoT:sta kun opiskelin tietojenkäsittelyä, ja minulle aukeni uusi maailma. Sitä ennen IoT oli lähes outo käsite, samalla tavalla tietoturva oli tuntematon käsitteenä ja käytännössä. Koulussa pohdittiin tietoturvaa kurssilla ja asiat konkretisoituivat kun pääsi itse tekemään käytännössä IoT projektin Raspberry Pillä.

Sen jälkeen olen puuhastellut Raspberry Pin kanssa omia projektejani, ja sen tietoturvalliseksi tekeminen oli todella mielenkiintoista ja haastavaa. Raspberry oletussalanan vaihtaminen oli tietysti melko ilmiselvää, ja sen tekeekin ensimmäisten asioiden joukossa, mutta tietojen koventaminen ja onkin jo vähän vaikeampi. Muutaman kerran olen tehnyt tietokannan Rpille ja sen suojaaminen vaatiikin vähän enemmän. Tietoturva tuli konkreettisemmaksi IoT:n kautta, sitä ennen en paljoa pohtinut asioita tai kiinnittänyt niihin niin huomiota.

Aikaisemmin pidin itse monia asioita itsestäänselvyytenä, nykyisin seuraan melko paljon keskusteluja, uutisia ja artikkeleita tietoturvasta. Silti olen vain erehtyväinen ihminen, vaikka kuinka yrittää olla fiksu ja ennakoiva, menen ihan varmasti helposti lankaan juuri sillä hetkellä kun en ole hereillä. Olen pyrkinyt tekemään asioita sen eteen ettei suurempia vahinkoja sattuisi. Tietysti koettanut jakaa tietoa myös muille. Youtube on tarjonnut paljon erilaisia näkökulmia ja videoita siitä kuinka hakkerit muuttuvat kokoajan taitavammiksi ja huomaamattomimmiksi. Kaikkea näistäkään videoista ei pidä ottaa liian vakavasti ja uskoa ihan mitä vain, mutta ne tarjoavat hyviä näkökulmia omaan tekemiseen ja päivittäiseen työskentelyyn.

Kun sosiaalinen media alkoi yleistyä 2010 -luvulla aloitettiin pohtimaan sitä, että medialuku taitoa ja netikettiä pitäisi alkaa opettamaan jo peruskoulussa. Samalla tavalla pitäisi nykyään opettaa tietoturvaa jo aikaisemmin, sitä pitäisi tuoda enemmän esille. Toisessa päässä ovat ikäihmiset joilla ei ole kokemusta tietotekniikasta, tietoa ja tukea pitäisi jakaa sinnekkin enemmän. Tietoturvaa ei pidä tarjota pelottelemalla vaan mahdollisuutena suojautua, moni yksilö ei oikeasti ymmärrä kuinka pienillä teoilla voisi välttyä monelta pahalta.

Kesän 2022 aikana uutisoitiin paljon älytalojen yleistymisestä ja niihin liittyvistä ongelmista. Sielläkin on pohdittavana turvallisuus, millä pidetään portit kiinni ettei ulkopuoliset pääse veivaamaan vaikka verhoja tai muuntamaan lämpötiloja. Tulevaisuudessa yhä useampi talo tulee sisältämään älykkyyttä, ja haasteet tietoturvan toteuttamisesta ovat taas koetuksella. Tietoturva tulee tulevaisuudessa olemaan mitä ihmeellisimmissä jokapäivän vempeleissä, siksi tietoisuutta pitäisi lisätä. Jos itse joskus älyä saa taloon, tulee varmasti mietittyä ja tutkittua tarkasti miten tietoturva on toteutunut.

Korona-aika ja nyt myös Ukrainan sota varmasti lisäsivät hakkereiden hyökkäyksiä. Nykyisin pyritään paljon myös tuhoamaan tietoa ja tietenkin myös kiristysvirusten uhka on kasvanut. Tarkkana saakin nykyisin olla, ja jatkuvasti huolehtia käyttöjärjestelmä ja selain päivityksistä.

Ihmisten hakkerointi (Social Engineering):

Kyberrikollisuus on keksinyt myös uusia tapoja tunkeutua yrityksiin, se tapahtuu nykyisin esimerkiksi työntekijän kautta. Ensimmäisenä tehdään tiedustelua, etsitään työntekijä esimerkiksi LinkedInin tai muun sosiaalisen median kautta. Sellainen työntekijä on ”hyvä potentiaalinen uhri” joka puhuu avoimesti asioistaan ja jakaa paljon tietoa sosiaaliseen mediaan. Heille voidaan lähettää ”kaveripyyntöjä”, tai suoria sähköposti/tekstiviestejä ja pyrkiä saamaan jonkinlainen haitta ohjelma asennettua. Kun on päästy tällaisen henkilön koneelle, voidaan tätä kautta pyrkiä eteenpäin kohti yrityksen paremmin suojattuja palveluja.

Tänä päivänä ihmiset paljon kuljettavat työkannettavia ja puhelimia kotiin, jossa saattaa olla heikommat suojaukset. Työkannettavia käytetään paljon myös hupitarkoituksiin, selataan nettiä jne, jolloin saatetaan eksyä väärille sivuille tai vastaanottaa epäilyttävä viestejä sähköpostiin tai sosiaalisen median tileille.

Saastunut kone tai puhelin kulkee kotoa työpaikalle, ja uhri ei huomaa mitään. Mutta mahdollinen laitteeseen pesiytynyt haittaohjelma voi aktivoitua, esim. DNS vaihdoksen liipaisemana ja pyrkiä saastuttamaan yrityksen verkkoa ja siihen kytkettyjä laitteita.


Palvelimien ja tietokoneiden monitorointi hyökkäysten varalta:

Jotta kyettäisiin reagoimaan nopeammin mahdollisiin hyökkäyksiin tietysti kannattaa miettiä palvelinkoneille ja työasemille jonkinlaista monitorointia, joka antaa tietoa IT-tuelle ja ylläpitäjille reaaliajassa ja hälyttää hälytysviestein, jos hyökkäys on käynnissä. Isot yritykset käyttävät tietysti paljon konsultteja ja maksullisia ohjelmistoja ja palveluja. Pienet yritykset ja kotikäyttäjät eivät ehkä vielä ole ymmärtäneet, että tällaisia ohjelmistoja ja palveluja on olemassa.

Kannattaakin harjoitella ja kokeilla näitäkin asioita, omassa kotiverkossa. Tietoa ja oppaita on nykyaikana olemassa paljon, haaste onkin löytää parhaat ja itselle sopivimmat ratkaisut.