• No results found

C.6 Diskussion

E.5.3 Flexibilitet

Dynamiska språk kan använda variabler och objekt innan de deklarerats till en specifik typ och kan introducera typer, namn och klasser när som helst vilket ger utvecklarna en viss flex- ibilitet när de skriver sina program [81]. Detta är väldigt hjälpfullt vid utvecklingen av en hemsida eftersom det finns många olika vägar som programmet kan gå när en användare klickar sig runt på en hemsida. JavaScripts sätt att skapa objekt är väldigt simpelt och sam- tidigt väldigt kraftfullt. Objekt skapas genom att bara lista dess komponenter vilket gör det enkelt att snabbt skapa dem, men det ger också stor flexibilitet i hur de används eftersom de inte finns några ramar som bestämmer exakt hur ett objekt ska se ut. Tillsammans med JavaScripts lösa typning [82] kan objekten snabbt byta form eftersom komponenterna inuti kan byta typ hur som helst, till exempel från en funktion till ett heltal. För att relatera till det här projektet används objekt som containrar med information som skickas till back-end från front-end för att t.ex. verifiera inloggningsuppgifter eller uppdatera en persons posi- tion. Eftersom JavaScripts objekt är flexibla behöver inte formella klassdefinitioner göras för alla olika typer av informationsobjekt som skickas till back-end. De kan formas hur projekt- gruppen vill beroende vad för typ av meddelande som vill skickas. Det hjälper också när ett meddelande ska skapas utifrån ett annat meddelande som precis har tagits emot eftersom då behöver inte en klassdefinition försöka överföras till en annan utan istället kan det direkt ändras i meddelandet som togs emot och sedan skicka iväg det.

E.6

Diskussion

I det här kapitlet diskuteras undersökningen i allmänhet och dess metod- och resultatdelar.

E.6.1

Resultat

Den generella slutsatsen som kan dras från resultatet är att det finns många positiva aspek- ter av JavaScripts dynamiska typsystem och att det framför allt haft en positiv inverkan på projektet i allmänhet. Det finns såklart ett hav av andra aspekter som skulle kunna analy- seras, som skulle visa sig vara både negativa och positiva. Andra studier [83] tar med det som använts i denna undersökning, medan vissa tar med andra aspekter [84]. Detta innebär att det finns rum för tvivel att resultatet på just den här studien är den definitiva sanningen angående dynamiska typsystem. Detta gäller för de flesta studier då det i många fall i grun- den bygger på en subjektiv åsikt om vilket typsystem som passar bäst. Med det i åtanke har denna undersökning gjorts med tanken att vara så objektiv som möjligt, men det kommer alltid finnas en oenighet om ämnet. Förhoppningsvis kan denna text agera som hjälp för de

E.7. Slutsats

som funderar på att använda ett dynamiskt typsystem, framförallt om det ska användas till ett liknande projektet.

E.6.2

Utvecklingstider

Att det generellt skulle vara skillnad i utvecklingstider mellan dynamiska typsystem gente- mot statiska typsystem kan med rimlighet ifrågasättas i någon grad då det nog beror mest på programmeraren själv och vad för något denne är van vid. Har en person programmerat en längre tid med ett statiskt typsystem är det rimligt att anta att denne är långsammare när hen för första gången ska testa ett dynamiskt språk. Å andra sidan nämns det i studien av Andreas Stuchlik och Stefan Hanenberg [79] att alla deltagare var mer vana med det statiska programmeringsspråket, de flesta hade faktiskt inte hade använt det dynamiska programme- ringsspråket tidigare, och ändå visade det sig att deltagarna generellt var snabbare med det dynamiska.

E.6.3

Metod

Metoden för att ta fram information till den här undersökningen har till stor del bestått av att ta fram artiklar och studier som också handlar om dynamisk typning. Framför allt har texter som har delar som kan relateras till just detta projekt och denna undersökning föredragits, som t.ex. att de beaktar JavaScript. Detta kan ha gjort att studiens relevans blivit begränsad då den blir centrerad kring en miljö som liknar den i det här projektet, istället för att vara lite mer generell. Samtidigt hade studien inte haft särskilt mycket relevans för projektet och projektgruppen ifall den tog en mycket bredare titt på det dynamiska typsystemet.

E.6.4

Källkritik

De källor som använts har i största möjliga utsträckning varit publicerade och hämtade från legitima sidor. För att vara säker på att alla källor är rimliga har författarnas eller sidans bakgrund kontrollerats kort. Publicerade källor har föredragits för att de ur ett källkritiskt perspektiv bör vara mer pålitliga och att källorna förhoppningsvis haft högre standard än sådana som plockats från sidor som inte har någon form av publiceringsstandard.

E.7

Slutsats

I det här kapitlet presenteras slutsatser till de frågeställningar som presenterades i början av texten.

E.7.1

Frågeställning 1

Den första frågeställningen frågade vad JavaScripts dynamiska typning har haft för inverkan på utvecklingen under projektet. Efter att ha jobbat med projektet under en lång tid och i och med att projektgruppen utvecklat med denna frågeställning i åtanke under utvecklings- processen kunde slutsatsen att typsystemet generellt haft en positiv inverkan på projektet dras. Flexibiliteten som programmeringsspråket gav har underlättat utvecklingen då många saker inte behövdes tänka på. Ofta hanterade typsystemet det själv, som användningen av objekt. Gruppen kom också fram till att det gick snabbt att programmera med ett dynamiskt typsystem, gentemot ett statiskt typsystem, och att projektet inte hade kommit lika långt om ett statiskt typsystem hade använts istället. Typsystemet har i slutändan både gett ett enkla- re program och möjligen resulterat i att mer funktionalitet har kunnat implementeras under projekttiden.

E.7. Slutsats

E.7.2

Frågeställning 2

Den andra frågeställningen frågade vad dynamisk typning har för fördelar gentemot ett sta- tiskt typat språk. Efter att både observerat det under det här projektets gång och från de diverse studier som lästs under litteraturstudien kan det sägas att det i allmänhet går snab- bare att producera kod med ett dynamiskt typat programmeringsspråk gentemot ett statiskt typat programmeringsspråk.

F

En webbapplikations sårbarhet

mot CSRF-attacker av Viktor

Blidh

F.1

Inledning

Idag används internet av drygt fyra miljarder människor både i kommersiellt- och affärssyf- te [85]. Det finns många argument till varför detta är en bra sak, men det finns också många risker på grund av webbapplikationers sårbarheter. En sådan sårbarhet är CSRF (Cross Site Request Forgery) attacker. De är mindre kända än andra attacker och blandas ibland ihop med XSS (Cross Site Scripting). Det kan vara en anledning till att det är vanligt att upptäcka denna sårbarhet bland webbapplikationer [86].

En CSRF-attack är en attack mot en webbapplikations användare i vilken angriparen tvingar ett offer att utföra en handling på en pålitlig hemsida via en skadlig länk eller liknan- de [87]. Attacken utnyttjar en webbsidas tilltro till en användare och kallas också för Session Riding [86]. CSRF har tidigare varit med i OWASPs lista av de 10 största hoten mot webbap- plikationer [88]. OWASP står för The Open Web Application Security Project och är en ideell organisation som fokuserar på mjukvarusäkerhet.

Related documents