SQL-lauseiden turvallinen muodostaminen REST-rajapinnan kyselyparametreista
Salonen, Jerry (2022)
Salonen, Jerry
2022
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2022093020704
https://urn.fi/URN:NBN:fi:amk-2022093020704
Tiivistelmä
Verkkosovellusten laajetessa eri tietokantaoperaatioita vaativien rajapintojen ohjelmoiminen ja ylläpito myös laajenevat ja monimutkaistuvat. Nopean kehitystyön eduksi olisi hyvä olla joustava rajapintatoteutus, jossa tietokantaoperaatioita voisi tehdä suoraan rajapintakyselyn parametrien avulla.
Työssä käydään hieman läpi REST-rajapintojen toimintaa, jonka jälkeen arkkitehtuurin rajoitukset työn näkökulmasta tuodaan esiin.
Työn tavoitteena on luoda ohjelmistokoodia, jolla voi REST-kyselyn parametreista muodostaa SQL-kyselyitä dynaamisesti ja tietoturvallisesti. Toteutuksessa hyödynnetään Go-ohjelmointikieltä ja koodigenerointia vahvasti tyypitetyn rajapintakoodin saavuttamiseksi. Koodin generoinnissa käytetään apuna Go:lle kehitettyä SQLBoiler-kirjastoa, joka generoi geneeristä, vahvasti tyypitettyä tietokantakoodia tietokantamallien mukaan.
Työn tuloksena on ohjelmistokirjasto, jolla voi dynaamisesti rajapinnan kautta hakea dataa tietokannasta siten, että rajapintatoteutuksia ei tarvitse kirjoittaa jokaiselle tietokantataululle erikseen. Kirjasto on täysin koodigeneroitu, joten se on vahvasti tyypitetty ja tyyppiturvallinen.
Työssä käydään hieman läpi REST-rajapintojen toimintaa, jonka jälkeen arkkitehtuurin rajoitukset työn näkökulmasta tuodaan esiin.
Työn tavoitteena on luoda ohjelmistokoodia, jolla voi REST-kyselyn parametreista muodostaa SQL-kyselyitä dynaamisesti ja tietoturvallisesti. Toteutuksessa hyödynnetään Go-ohjelmointikieltä ja koodigenerointia vahvasti tyypitetyn rajapintakoodin saavuttamiseksi. Koodin generoinnissa käytetään apuna Go:lle kehitettyä SQLBoiler-kirjastoa, joka generoi geneeristä, vahvasti tyypitettyä tietokantakoodia tietokantamallien mukaan.
Työn tuloksena on ohjelmistokirjasto, jolla voi dynaamisesti rajapinnan kautta hakea dataa tietokannasta siten, että rajapintatoteutuksia ei tarvitse kirjoittaa jokaiselle tietokantataululle erikseen. Kirjasto on täysin koodigeneroitu, joten se on vahvasti tyypitetty ja tyyppiturvallinen.