Unification of form validation implementations in web clients and servers

Loading...
Thumbnail Image
Journal Title
Journal ISSN
Volume Title
Perustieteiden korkeakoulu | Master's thesis
Date
2023-01-23
Department
Major/Subject
Computer Science
Mcode
SCI3042
Degree programme
Master’s Programme in Computer, Communication and Information Sciences
Language
en
Pages
56 + 1
Series
Abstract
When processing user input in forms and in a more general context, the input data must be validated to ensure that the data is correct and does not cause security issues. This validation can and should be performed both on the client and on the application server. Despite the similarity of the validation rules in both environments, the implementations of these validation phases are almost always separated due to differing technologies used on both sides as well as the differing access to the databases used by the service. This leads to the validation logic being duplicated on the client and the server, which in turn leads to the need to maintain validation implementations separately on both sides. This thesis investigates the possible solutions to the unification of the separate implementations of validation logic. It reviews the academic literature on the topic with the aim of discovering solution ideas and approaches as well as readily implemented solutions. In addition to implementations, the thesis evaluates the usefulness of the solutions. The thesis discovers that the academic literature on the topic is very scarce. It also presents three possible approaches to solve the duplication problem: a dedicated validation server, reuse of server-side validation and the generation of validation code for client and server on the basis of a specification. Of the three, the generative approach is seen as the most promising as it does not rely on the availability of a server, and it solves the duplication issue while allowing client-side validation to be performed on the client. Prototype implementations of a specification-based validation library for a ReactJS client and Node.js server are presented. The results of the thesis suggest that unification of client-side and server-side validation implementations is possible by generating the validation functions on both sides. The specification-based approach is likely to be especially useful for forms with complicated logic and interdependence between fields.

Verkkosovelluksen turvallisuuden ja siinä käsitellyn datan oikeellisuuden varmistamiseksi verkkolomakkeiden käsittelyssä on pidettävä huoli siitä, että niihin syötetty data tarkistetaan. Tämä tarkistus eli validointi pitäisi suorittaa sekä asiakkaan että palvelimen puolella. Lomakkeiden tarkistussäännöt ovat tyypillisesti molemmilla puolilla hyvin samankaltaisia, mutta toteutukset on tehtävä erillisiksi asiakas- ja palvelinpuolten eriävien teknologioiden ja asiakkaalta yleisesti puuttuvan tietokantayhteyden vuoksi. Toteutusten erillisyys johtaa validointilogiikan kahdentumiseen, mikä puolestaan aiheuttaa tarpeen ylläpitää kahta toteutusta yhden sijaan. Tämä diplomityö tutkii mahdollisia ratkaisuja validointilogiikan erillisten toteutusten yhdistämiseen. Se tutkii aihetta käsittelevää akateemista kirjallisuutta mahdollisten ratkaisuideoiden, lähestymistapojen ja jopa valmiiden ratkaisujen löytymiseksi. Toteutusten tutkimisen lisäksi diplomityö arvioi ratkaisujen hyödyllisyyttä. Diplomityössä havaitaan, että aihetta käsittelevä akateeminen kirjallisuus on vähäistä. Siinä myös esitellään kolme mahdollista lähestymistapaa kahdentumisongelman ratkaisuun: erillinen validointipalvelin, palvelinpuolen toteutuksen tarjoaminen asiakkaalle verkon yli ja validointikoodin generointi asiakas- ja palvelinpuolelle lomakemäärittelydokumentin perusteella. Näistä vaihtoehdoista määrittelyn perusteella validointikoodin generointi todetaan lupaavimmaksi, sillä se mahdollistaa asiakaspuolen validoinnin asiakkaan puolella yleisessä tapauksessa ja myös palvelimen ollessa tavoittamattomissa. Tästä lähestymistavasta esitetään ReactJS-kirjastolla toteutetulle asiakkaalle ja Node.js-teknologialla toteutetulle palvelimelle tehdyt prototyyppitoteutukset. Diplomityön tuloksista voidaan päätellä, että asiakas- ja palvelinpuolen toteutusten yhdistäminen on mahdollista generointimenetelmällä. Generointimenetelmä on todennäköisesti erityisen hyödyllinen monimutkaisille lomakkeille, joissa kenttien välillä on keskinäisriippuvuuksia.
Description
Supervisor
Siekkinen, Matti
Thesis advisor
Siekkinen, Matti
Keywords
web forms, form validation, client-side validation, server-side validation
Other note
Citation