design och implementering av ett webbaserat ...24435/fulltext01.pdf · huvudinriktning på denna...

106
Design och implementering av ett webbaserat personalhanteringssystem Dean Maros Johan Norberg EXAMENSARBETE 2005 DATATEKNIK

Upload: others

Post on 06-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Design och implementering av ett webbaserat personalhanteringssystem

Dean Maros

Johan Norberg

EXAMENSARBETE 2005

DATATEKNIK

Page 2: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Design och implementering av ett webbaserat personalhanteringssystem

The development of a web based information system for

employee administration

Dean Maros

Johan Norberg

Detta examensarbete är utfört vid Ingenjörshögskolan i Jönköping inom ämnesområdet datateknik. Arbetet är ett led i den treåriga högskole-ingenjörsutbildningen. Författarna ansvarar själva för framförda åsikter, slutsatser och resultat.

Handledare: Magnus Schoultz

Omfattning: 10p (C-nivå)

Datum: 5/16/05

Arkiveringsnummer:

Postadress: Besöksadress: Telefon: Telefax:

Box 1026 Kyrkogatan 15 036-15 77 00 (vx) 036-12 00 65

551 11 Jönköping

Page 3: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Abstract

Quickmatch is a company that recruits students to other companies that need temporary workers. Today all administration is done by hand, which is very time demanding and therefore inefficient. Employees send assignment reports by e-mail about the working hours and breaks to the administration office. Since these reports are handled manually, there is a great need for an automated system that makes the company more scalable.

The purpose of this work was to solve the defined problem, i. e. increase the efficiency of the assignment administration by automation. In practical terms the solution was described as a web based information system.

The requirements of such a system is high. Properties like compatibility with future software, platform independence and security are particulary important. Also aspects like usability and cost effectiveness influence the system design. The technology that was chosen was the web server Apache, the database server MySQL and the scripting language PHP. Because of the importance of the aspect of platform independence, no special platform came to attention; the goal is a working system on all platforms.

The information system on the client side is based on normal browser software. No extra plugins should be needed for being able to use it. The decision was based on the goal that you should be able to use it on any computer connected to the Internet. To achieve the aspects of future and platform independent compatibility the page description language XHTML 1.0 Strict was chosen in combination of CSS. The language JavaScript was also selected to create DHTML functionality.

On the server side the aspects of future and platform independent compatibility made the decision of minimizing dependencies. No other software than Apache, MySQL and PHP should be nessecary on the server. To minimize the dependency a SMTP client was written with PHP's socket functions. The mail function was used to send forgotten passwords to employees and to send assignment reminder messages.

The database model that was chosen was UML. The decision was made because of the model's frequent uses for both academic purposes and in the industry. It was also because of the need for a model to guarantee an efficient system design.

The work resulted in a information system that solved the defined problem. The assignment administration was made more efficient than before, which reduces the burden of work. The general aspects of the system was considered within acceptable limits. That consideration was based on the achieved specifications of requirements and the results of the testphase of the implemented system.

Because of the limited time frame the system was reduced to only solve the defined problem. The design of the system does however have the capabilities for future extensions.

Page 4: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

SammanfattningFöretaget Quickmatch är ett rekryteringsföretag som baserar sin verksamhet på studenter och hyr ut studenterna till olika företag som har behov av arbetskraft.

I dagsläget hanteras alla uthyrningsuppdrag manuellt, vilket innebär att mycket tid ägnas åt att behandla uppdragsrapporter som anställda skickar med e-post. Denna aktivitet anses vara ineffektiv och ett stort intresse finns för en datorbaserad lösning som automatiserar den största delen av det administrativa arbetet. Syftet med detta arbete var att lösa dessa problem, dvs. att effektivisera uppdragshanteringen samt löneberäkningsdelen genom automatisering. I praktiska ordalag handlar denna effektivisering om ett webbaserat informationssystem.

De krav som ställs på ett sådant system är stora. Egenskaper såsom långsiktighet, kompatibilitet, korrekthet och säkerhet är särskilt viktiga. Även aspekter som användbarhet och kostnad påverkar valet. Den teknologi som valdes för att skapa systemet var webbservern Apache, databasservern MySQL samt scriptspråket PHP. Eftersom principen om plattformsoberoende är en mycket viktig egenskap hos systemet valdes inte någon speciell plattform som systemet skulle basera sig på; målet var att det skulle fungera på alla plattformar.

Informationssystemet baserar sig på vanliga browserprogramvaror. Inga extra plugin skall behövas för att kunna använda systemet. Målet med detta vägval är att man skall kunna använda systemet ifrån vilken dator som helst som har Internetuppkoppling. För att efterfölja målet om långsiktighet och kompatibelitet mellan plattformar valdes sidbeskrivningsspråket XHTML 1.0 Strict i kombination med användningen av CSS. Förutom klientens tolkning av sådana data används också JavaScript för DHTML-funktionalitet.

Serversidan har också stora krav på kompatibilitet och långsiktighet. Det anses vara mycket viktigt att minimera systemens beroenden till andra programvaror på servern förrutom Apache, MySQL och PHP. Av denna anledning skrevs en egen SMTP-klient med hjälp av PHPs socketfunktioner. Mailfunktionen används för systemets hantering av glömda lösenord samt påminnelsefunktionalitet för uppdragshanteringen.

Den systemutvecklingsmodell som valdes var UML eftersom den både används inom den akademiska världen samt på många företag. Den anses dessutom vara fördelaktig att använda för att garantera en god systemdesign.

Arbetet har resulterat i ett system som sköter administreringen av företagets uppdrag samt löneberäkningar. Därmed löses det problem som definierats. En effektivisering med hjälp av informationssystemet minskar arbetsbördan hos företaget. De generella målaspekter som definierats anses vara acceptabla. Kravspecifikationen har efterföljts samt tester av implementation har givit ett positivt resultat.

Eftersom utvecklingen av systemet har utförts inom en begränsad tidsperiod är systemet avgränsat till uppdragshanteringen. Systemets design skapar stora möjligheter för framtida utbyggnad.

NyckelordApacheMySQLPHPXHTMLInformationssystem

Page 5: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Innehållsförteckning1 Introduktion till problemområdet............................................................7

1.2 Företagsbeskrivning.........................................................................71.2.1 Introduktion...............................................................................71.2.2 Verksamhetsbeskrivning...........................................................7

1.3 Personlig bakgrund...........................................................................81.4 Problembeskrivning och önskemål...................................................81.5 Mål och syfte.....................................................................................91.6 Avgränsning....................................................................................10

2 Teoretisk bakgrund................................................................................112.1 Nätverksprotokoll...........................................................................11

2.1.1 HTTP........................................................................................112.1.2 SMTP.......................................................................................14

2.2 Databaser........................................................................................172.2.1 DBMS......................................................................................172.2.2 Modeller för databasmodellering............................................172.2.3 Normalisering.........................................................................192.2.4 SQL..........................................................................................192.2.5 Databasservrar........................................................................23

2.3 Sidbeskrivningsspråk.....................................................................252.3.1 HTML......................................................................................252.3.2 CSS..........................................................................................262.3.3 XHTML....................................................................................28

2.4 Implementationer av HTTP-protokollet..........................................292.4.1 Servrar....................................................................................292.4.2 Klienter....................................................................................312.4.3 Dynamisk webbfunktionalitet..................................................34

2.5 Användarcentrerade system...........................................................382.6 Datasäkerhet...................................................................................40

2.6.1 Definitioner.............................................................................402.6.2 Databassäkerhet......................................................................43

2.7 Standarder och rekommendationer ...............................................452.7.1 W3C.........................................................................................452.7.2 JPEG........................................................................................462.7.3 PNG och GIF............................................................................472.7.4 W3Cs rekommendationer........................................................48

3 Genomförande........................................................................................513.1 Val av plattform och teknologier....................................................51

3.1.1 Systemutvecklingsmetod samt databasserver........................513.1.2 Webbserver.............................................................................523.1.3 Språk.......................................................................................523.1.4 Komprimeringsformat och datarepresentation.......................53

3.2 Systemdesignen..............................................................................533.2.1 Databasmodellering................................................................533.2.3 Användargränssnitt.................................................................57

3.3 Utveckling av systemet...................................................................583.3.1 Skapandet av grafik................................................................583.3.2 Programmeringsfasen.............................................................58

3.4 Testfas.............................................................................................603.4.1 Metod......................................................................................603.4.2 Genomförande och resultat.....................................................61

4 Resultat..................................................................................................634.1 Personalhanteringssystemet...........................................................63

4.1.1 Systemets öppna del...............................................................634.1.2 Systemets administrativa del..................................................664.1.3 Systemets del för timanställda................................................71

4.2 Slutsats...........................................................................................745 Diskussion..............................................................................................75

Page 6: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

6 Referensförteckning...............................................................................767 Sökord....................................................................................................82

Page 7: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Introduktion till problemområdet

1 Introduktion till problemområdet

1.2 Företagsbeskrivning

1.2.1 Introduktion

Quickmatch är ett rekryteringsföretag som baserar sin verksamhet på uthyrning av studenter till företag. Företaget leds av två personer som hanterar ca. 100 timanställda och två anställda som sköter viss administration. De områden som företaget främst inriktar sig mot är lagerhantering, restaurangbranschen samt lackering.

I dagsläget använder sig företaget av ett webbaserat system som innehåller timanställdas CV. De sköter all annan personalhantering manuellt. Rapportering av timanställdas uppdrag sker i nuläget via e-post eller telefon.

1.2.2 Verksamhetsbeskrivning

Figur 1-1: Verksamhetbeskrivning i nuläge

Figuren ovan beskriver företagets verksamhet. Rektangelobjekten representerar en person eller grupp av personer, t. ex. “Kund”. Rektanglarna med en spets i höger kant representerar något som utförs, exempelvis “Personalhantering”. Romben beskriver vilken information som överförs mellan de två förstnämnda objekten, t. ex. “Detaljerad uppdragsbeskrivning”.

En kund ringer och talar om att arbete finns under en viss tidsperiod och undrar om arbetskraft för detta existerar. Quickmatch ringer till timanställda som kan tänkas kunna jobba. Tillsammans med frågan beskrivs uppdraget. När den efterfrågade arbetskraften hittats skickas en

7(106)

Page 8: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Introduktion till problemområdet

bekräftelse till kunden.

När arbetet har utförts av de berörda timanställda skickas en uppdragsrapport till quickmatch som innehåller antalet arbetstimmar grupperade efter tid på dygnet då dessa är olika viktade. Rapporteringen sker via e-post.

Uppdragsrapporteringen utmynnar sedan till löneberäkningar som beräknas för hand av Quickmatch. Om det är första gången en anställd utför ett uppdrag på det specifika företaget används lägre fakturerings-avgifter, medan den timanställde har oförändrad timlön. I detta fall samt normala fall baserar sig fakturan på en påläggssats, som kan variera beroende på situation.

1.3 Personlig bakgrundEfter tre års studier på programmet “Information och medieteknik” har vi genomgått kurser inom ett brett område. Förutom grundläggande kurser inom naturvetenskapliga ämnen och datatekniska områden har vi bl. a. läst kurser om ekonomi, organisationsteori, kommunikationsteori samt ingenjörsmetodik. Detta har lett till en ökad förståelse av hur företag fungerar och hur de bör utvecklas.

De datatekniska kurserna som lästs behandlar operativsystem, datakommunikation, programmering, databashantering och systemutveckling, utformning av gränsnitt samt grafisk teknik. Då vår huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper inom sådana områden. Detta har gett oss förmågan att bl. a. skapa webbaserade informationssystem.

1.4 Problembeskrivning och önskemålQuickmatch har en ineffektiv hantering av timanställda. Det finns inget automatiserat system för uppdragshanteringen. I dagsläget sköts rapportering om uppdrag, löneberäkningar och annan information manuellt. Detta resulterar i stor tidsåtgång för företagets administrativa del. Det begränsar också i viss mån företagets utveckling.

Med datorns hjälp skulle man kunna minimera denna administrativa del. I och med att ett sådant system skulle kunna hantera en mycket större mängd uppdrag, skulle företaget växa och uppnå en bättre lönsamhet.

Dessutom saknas i dagsläget ett unifierat system för alla administrativa arbetsuppgifter. Dessa kan sammanfattas som företagsbeskrivning, företagskontaktuppgifter, uppdragshantering, CV-hantering samt ekonomisk hantering (t. ex. löneberäkningar och fakturering).

Då företaget har timanställda som inte befinner sig i samma byggnad som den administrativa delen finns ett stort intresse att de timanställda på något sätt ska kunna komma åt datorsystemet utifrån. Företagsledningen är mycket intresserade av att använda Internet som kommunikations-kanal mellan timanställd och företagets datorsystem. Detta eftersom denna lösning både är ekonomiskt fördelaktig samt använder sig av beprövad

8(106)

Page 9: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Introduktion till problemområdet

teknik.

Quickmatch är intresserade av ett datorsystem som förväntas fungera under en längre tidsperiod. Det bör ha en konstruktion som klarar att anpassa sig till förändrade förhållanden samt plattformar som kan tänkas användas i framtiden. Det finns därför intresse för att systemet ska ha så få beroenden. Det skall i sin helhet fungera så självständigt som möjligt.

1.5 Mål och syfteHuvudmålet är att skapa en väl fungerande lösning till det beskrivna problemet, dvs. effektivisering av timanställdhanteringen. För att uppnå detta mål måste man tänka på helheten. Förrutom själva systemdesignen måste man tänka på kärnan, system-programvaran samt serverprogramvaran. Går man en annan väg är sannolikheten stor att målet inte uppnås.

Man kan betrakta huvudmålet som delmål som tillsammans skapar helheten. Dessa delmål beskriver generella egenskaper hos lösningen till problemet och beskrivs nedan.

SäkerhetEftersom systemet hanterar personuppgifter och timanställdas löner är kravet på säkerhet stort. Åtgärder för att minimera risken för intrång måste utföras. En balans måste dock upprätthållas då funktionaliteten inte får påverkas i någon större omfattning av dessa åtgärder.

FunktionalitetFör att uppnå målet måste lösningen vara av sådan karaktär att man med hjälp utav en viss funktionalitet löser problembeskrivningen. Den funktionalitet som avses beskrivs i kravspecifikationen som ingår som bilaga i rapporten.

AnvändbarhetSaknas användbarhet blir lösningen oanvändbar för de personer som ska använda systemet. Man måste därför välja en väg som tillhandahåller god användbarhet. Med detta delmål avses ett användargränssnitt som är helt självförklarande. Ingen ytterligare beskrivning än själva gränssnittet skall behövas för att användaren ska förstå hur man arbetar i systemet. Man bör dock anta att personen ifråga känner till hur företagets verksamhet ser ut.

Korrekthet och robusthetDet är viktigt att lösningen som väljs har en korrekt konstruktion. Den påverkar både resultatets noggrannhet samt stabilitet. Om en funktion inte är tillräckligt väldefinierad kan problem uppstå om förutsättningarna ändras. Detta kan exempelvis uppstå vid omskrivning av en annan funktion som är beroende av den nämna funktionen. Man kan beskriva denna egenskap genom analogin med att bygga ett hus. Använder man bristfälligt material eller felaktig metod för att bygga grunden till huset, kan allting rasera vid förändrade förhållanden.

9(106)

Page 10: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Introduktion till problemområdet

Robusthet beskriver anpassningsförmågan. Om t.ex. en funktion är hårdkodad för vissa förhållanden blir den mindre robust än om den dynamiskt anpassar sig till nya miljöer.

Flexibilitet och kompatibilitetEtt system som är förändringsbart och långlivat är egenskaper för en god lösning. Det som påverkar denna egenskap till största grad är lösningens arkitektur samt i vilken miljö den är placerad. Denna egenskap har en viss likhet med den föregående, dvs. båda beskriver arkitekturens utseende. Ibland kan den robusta egenskapen minska en lösnings flexibilitet eller kompatibilitet. Om huset som beskrevs ovan var konstruerat i armerad betong hade det varit svårt att förändra (t. ex. öppna en vägg för utbyggnad). Man bör därför välja en lösning som balanserar den robusta egenskapen med flexibiliteten till systemets fördel.

Prestanda och tillgänglighetDenna egenskap påverkar till stor del hur lösningen upplevs av de som använder det. Denna ofta subjektiva aspekt beror främst på svarstider mellan klient och servern. Hur dessa uppfattas beror på individen som använder systemet. Dessa tider påverkas indirekt av vilka åtgärder man utför för att tillhandahålla god tillgänglighet. Det går dock att reducera subjektivismen för dessa två aspekter genom att relatera till kravspecifikationen samt att mäta tiden för en viss funktionalitet.

KostnadDenna aspekt alltid viktig i företagssammanhang. Lösningen ska vara kostnadsmässigt effektiv, men ska samtidigt bibehålla en specifik kvalité.

1.6 AvgränsningDet problemområde som arbetet främst inriktar sig på är uppdragshanteringen och lönehanteringen. Delar såsom företags-beskrivning, företagskontaktuppgifter samt CV-hantering har lägre prioritet. Fakturahantering och standardinställningar per kund har också fått låg prioritet.

Denna fokusering har valts eftersom de valda områdena skapar flest problem i företaget. Dessa prioriterade delar baserar sig på de generella egenskaperna som nämndes i föregående avsnitt.

10(106)

Page 11: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

2 Teoretisk bakgrundNedanstående avsnitt fokuserar sig på de tänkbara teoretiska aspekterna som kan förekomma vid skapandet av ett datorsystem som beskrivits.

Eftersom arbetet bygger vidare på redan befintlig teknologi förekommer också beskrivning av de grundläggande praktiska byggstenarna samt deras fördelar och nackdelar.

Avsnitten är ordnade efter abstraktionsnivå. De lägsta nivåerna beskrivs först och det som bygger vidare på det underliggande presenteras därefter. Materialet grupperas till en viss grad ockå i en ordning som underlättar förståelsen av området.

2.1 Nätverksprotokoll

2.1.1 HTTP

HTTP (HyperText Transfer Protocol) är en av de vanligaste metoderna för att överföra data på Internet. Dess främsta syfte är i dagsläget att överföra HTML-filer ifrån en webbserver till en klient, men protokollet stödjer överföring av vilken filtyp som helst. Protokollet skapades av ett samarbete mellan W3C (World Wide Web Consortium) och IETF (Internet Engineering Task Force) och finns beskrivet i olika RFC. Den senaste HTTP versionen 1.1 finns beskrivet i RFC 2616.

HTTP är ett protokoll som baserar sig på överförandet av så kallade “HTTP Requests” samt “HTTP Response” mellan server och klient. Kommunikationen sker på port 80 via TCP-protokollet. All trafik som skickas mellan klienten och servern överförs okrypterat via klartextkommandon. Möjlighet för kryptering finns dock via HTTPS-protokollet som använder sig av ett SSL-lager ovanpå den vanliga HTTP-kommunikationen. Detta protokoll kommunicerar på TCP-port 443. [1]

För att peka ut en resurs på en HTTP-server använder man sig utav URL (Uniform Resource Locator), som baserar sig på DNS-protokollet för namnhantering. En sådan har följande syntax:

protokoll://host:port/adress

I praktiken brukar porten utelämnas då den är standardiserad för det angivna protokollet. Exemplet nedan visar en URL i praktiken:

http://www.google.se/language_tools?hl=sv

Användningen av URL är inte endast för HTTP-protokollet utan det finns ett stort användningsområde. Ett annat begrepp är URI (Uniform Resource Identifier) som är en mer generell beskrivning av en resurs. Skillnaden mellan en URI och URL är att en URI indentifierar en resurs i generell form, medan en URL identifierar en resurs och anger hur man hittar resursen. Ibland används begreppet URI istället för URL då en URL i nästan alla fall också är en URI. [2]

11(106)

Page 12: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Som tidigare nämnts kommunicerar klienten med servern via klartextkommandon. Klienten skickar en Request-PDU som innehåller det önskade kommandot, vilket sedan besvaras med en Response-PDU. De vanligaste kommandona exemplifieras nedan.

GETDet vanligaste kommandot. Begär en specifik resurs med hjälp utav en URL. Eftersom browsern kopplar upp sig till den server som användaren angett via URL:en anges endast den sökvägen till filen i detta kommando. Ett sådant kommando demonstreras nedan.

GET /rfc/rfc2068.txt HTTP/1.1Host: www.ietf.org

Enligt RFC 2616 måste man i HTTP 1.1 ange Host-fältet i alla requests för att inte få felkoden 400 (Bad Request). Likt alla kommandon avslutas det med CRLF (Carriage Return Line Feed). Det som returneras är information om servern, information om datat och sedan själva datat, vilket i detta fall är en ASCII-fil.

Det går också att skicka med variabeldata till GET-kommandot genom att använda “?” och “&”-tecknen i slutet av URL:en. Detta kan sedan behandlas i servern t. ex. med hjälp av CGI, ASP, PHP eller något motsvarande. En sådan rad ser ut enligt följande exempel.

GET /info.php?v1=Detta+är+ett+test&v2=Test%20%20nr.+2 HTTP/1.1Host: www.guilong.org

Mottagen variabeldata:v1=”Detta är ett test”v2=”Test nr. 2”

Servern kan sedan använda dessa variabler för att spara informationen på servern eller generera en webbsida baserat på datat som sedan returneras till klienten.

HEADEtt kommando som endast begär headern till t. ex. en HTML-fil. Det som returneras är information om servern, vilket format filen har samt vilken kodning den har. Exempel nedan visar kommandosyntaxen:

Head /info.php HTTP/1.1Host: www.guilong.org

[1,3]

12(106)

Page 13: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

POSTPOST används för att skicka data till servern. Detta brukar oftast vara formulärdata som servern ska lagra eller behandla. Variabeldata lagras i HTML-koden som sedan browsern skickar via POST-kommandot. Ett praktiskt exempel visas nedan:

POST /info.php HTTP/1.1 Host: www.guilong.orgContent-Type: application/x-www-form-urlencodedContent-Length: 17

v1=test1&v2=test2

Mottagen variabeldata:v1=”test1”v2=”test2”

Observera att “Content-Length” måste anpassas till den datamängd som ska skickas. I detta fall används 8-bitar för att representera ett tecken, vilket leder till att 17 Byte ska skickas. Denna längd inkluderar även de tecken som beskriver själva variabeln. Beskrivningen om datat och själva datat är skilt med ett extra CRLF. Precis som med GET-kommandot kan man hantera variablerna på servern, med den enda skillnaden att de hämtas ifrån en annan källa. [4]

Det finns några ytterligare kommandon i HTTP-protokollet som t. ex. PUT och Delete. PUT kan användas för att lägga upp en fil på servern medans Delete tar bort en vald fil. Dessa kommandon brukar dock av säkerhetsskäl aldrig användas. Ofta är de inte ens implementerade i serverprogramvaran. [1]

Som ett komplement till kommandona GET och POST finns cookies. Det är en variabel som servern kan välja att definiera. En sådan lagras lokalt på klientens hårddisk. När en klient ansluter till en server som tidigare skapat en sådan cookie, kommer klienten att skicka med denna. Ofta brukar sessionsvariabler skickas med via cookies. De data som en cookie lagrar exemplifieras nedan.

Name: PHPSESSIDContent: 405febc25e4e5fcc3007eaba82f3167bHost: guilong.orgPath: /Send for: Any type of connectionExpires: at end of session

Denna cookien talar om för webbservern vilken användare som ansluter och den kan då anpassa innehållet därefter. [5]

Det finns två versioner av HTTP-protokollet, nämligen version 1 och 1.1. Den första versionen kopplar ner uppkopplingen efter varje request som klienten skickar. Detta resulterar i en långsam dataöverföring då TCP-protokollet använder sig av “slow start”, eftersom hastigheten inte hinner öka då uppkopplingen stängs. Ett annat relaterat problem är det som uppstår när varje request hanteras separat. För varje uppkoppling som skapas måste en

13(106)

Page 14: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

trevägshandskakning genomföras, vilket är tidskrävande om det är stort fysiskt avstånd mellan server och klient.

Lösningen till dessa problem kom i och med version 1.1 av HTTP-protokollet. I denna versionen kan man skicka flera requests åt gången och därmed eliminera problemet med “slow start” i kombination med att endast en trevägshandskakning utförs. Är kommunikationen mellan klient och server inaktiv kommer dock uppkopplingen att stängas ner efter ett tag, men detta orsakar inga praktiska problem. [6]

2.1.2 SMTP

SMTP (Simple Mail Transfer Protocol) är ett nätverksprotokoll som används för att skicka e-post. Det baserar sig på TCP-protokollet och använder porten 25. RFC 2821 är det aktuella dokumentet som beskriver dess funktionalitet.

SMTP-protokollet är en del av ett e-postsystem. Det ansvarar för skickandet av posten, vilket oftast brukar benämnas som MTA (Mail Transfer Agent). För att hämta/läsa skickad epost används protokollen POP3 (Post Office Protocol) samt IMAP (Internet Message Access Protocol). SMTP använder sig av DNS för hantering av nätverksadresser. Som nämnts i avsnitt 2.1.1 skickar SMTP-servern en MX-förfrågan till den DNS-server som ansvarar för en specifik domän, för att ta reda på vilken andress som den ska skicka data till.

Protokollet är ASCII-baserat, likt HTTP-protokollet där kommandon skickas mellan klient och server. Man kan därför exempelvis använda sig av telnet för att skicka e-post. Exemplet nedan visar hur det går till:

guilong@Guilong:~# telnet smtp.bredband.net 25Trying 195.54.106.231...Connected to smtp.bredband.net.Escape character is '^]'.220 mxfep02.bredband.com ESMTP server ready Thu, 21 Apr 2005 15:31:04 +0200HELO guilong.org250 mxfep02.bredband.comMAIL FROM: [email protected] Sender <[email protected]> OkRCPT TO: [email protected] Recipient <[email protected]> OkDATA354 Ok Send data ending with <CRLF>.<CRLF>Subject: Testar SMTP-protokolletFrom: [email protected]!

testar...123. 250 Message received: [email protected] mxfep02.bredband.com ESMTP server closing connectionConnection closed by foreign host.

14(106)

Page 15: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Det fetmarkerade representerar det inmatade. Varje kommando avslutas med CRLF. Undantaget är DATA-definitionsdelen som avslutas med sekvensen CRLF.CRLF, dvs. en punkt på en tom rad. Kommandoraderna skickar brevet till den angivna adressen. [7]

Om man vill skicka med binärdata (t. ex. en zip-fil), använder man sig av något som kallas MIME (Multipurpose Internet Mail Extensions) för att beskriva datat. Det används också om man vill skicka text i annan kodning än ASCII.

MIME beskrivs med hjälp utav olika headers som anges i brevets datadel. Följande exempel skickar ett brev kodat i base64, som garanterar bevaringen av specialtecken såsom å,ä och ö. Denna kodning använder sig av ASCII-tabellen som alla SMTP-servrar stöder.

guilong@Guilong:~# telnet smtp.bredband.net 25Trying 195.54.106.231...Connected to smtp.bredband.net.Escape character is '^]'.220 mxfep01.bredband.com ESMTP server ready Thu, 21 Apr 2005 17:55:32 +0200HELO guilong.org250 mxfep01.bredband.comMAIL FROM: [email protected] Sender <[email protected]> OkRCPT TO: [email protected] Recipient <[email protected]> OkDATA354 Ok Send data ending with <CRLF>.<CRLF>MIME-Version: 1.0Subject: Testar SMTP-protokollet med MIME och base64From: [email protected]: text/plain; charset="us-ascii"Content-Transfer-Encoding: base64SGVqClRlc3Rhci4uLjEyMyDl5PYgxcTW.250 Message received: [email protected] mxfep01.bredband.com ESMTP server closing connectionConnection closed by foreign host.

Den kodade base64-strängen “SGVqClRlc3Rhci4uLjEyMyDl5PYgxcTW” översätts till “Hej\nTestar...123 åäö ÅÄÖ” av mailklienten. Vill man skicka ett brev som endast innehåller HTML-kodning kan man göra så genom att ändra raden “Content-Type: text/plain; charset="us-ascii"”, till “Content-Type: text/html; charset="us-ascii"” och använda lämplig base64data. Detta rekommenderas dock inte då man inte kan räkna med att alla mailprogram stöder html. Möjligheten finns dock.

15(106)

Page 16: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Nedanstående rader kodar både i text och i HTML. Det garanterar att alla kan läsa epostmeddelandet då textversionen kommer att visas om HTML inte stöds i mailprogrammet. Eftersom inte alla SMTP-servrar klarar kodning som skiljer sig ifrån ASCII-formatet, kodas informationen med hjälp av base64metoden. På så sätt skapar man kompatibilitet både på SMTP-servrarna och för de program som ska läsa brevet.

guilong@Guilong:~# telnet smtp.bredband.net 25Trying 195.54.106.231...Connected to smtp.bredband.net.Escape character is '^]'.220 mxfep01.bredband.com ESMTP server ready Thu, 21 Apr 2005 19:24:44 +0200HELO guilong.org250 mxfep01.bredband.comMAIL FROM: [email protected] Sender <[email protected]> OkRCPT TO: [email protected] Recipient <[email protected]> OkDATA354 Ok Send data ending with <CRLF>.<CRLF>MIME-Version: 1.0Content-Type: multipart/alternative; boundary="next_part"Subject: Testar SMTP-protokollet med text och html via MIMEFrom: Johan NorbergTo: Dean Maros

This is a multi-part message in MIME format.

--next_partContent-Type: text/plain; charset="ISO-8859-1"Content-Transfer-Encoding: base64

SGVqClRlc3Rhci4uLjEyMyDl5PYgxcTW

--next_partContent-Type: text/html; charset="ISO-8859-1"Content-Transfer-Encoding: base64

PGh0bWw+PGhlYWQ+PHRpdGxlPlRlc3RhciBNSU1FIG1lZCBIVE1MLWRlbDwvdGl0bGU+PC9oZWFkPjxib2R5Pjx0YWJsZSBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+PHRyPjx0ZD5hPC90ZD48dGQ+YjwvdGQ+PHRyPjx0cj48dGQ+YzwvdGQ+PHRkPmQ8L3RkPjx0cj48L3RhYmxlPjwvYm9keT48L2h0bWw+

--next_part--

.250 Message received: [email protected] mxfep01.bredband.com ESMTP server closing connectionConnection closed by foreign host.

HTML-versionen av brevet visar en table med två rader och två kolumner med bokstäverna a, b, c, och d. Innehållet i brevet borde varit samma, men exemplet finns för att demonstrera principen.

16(106)

Page 17: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Observera att två extra “-”-sträck placeras före “next_part” samt att den sista brytsträngen skrivs som “--next_part--”. [8, 9, 10]

2.2 Databaser

2.2.1 DBMS

En DBMS (DataBase Management System) är ett system för hantering av databaser. Nuförtiden är alla datoriserade och hanterar data för alla dagens informationssystem. Det finns ett flertal olika DBMS-kategorier som strukturerar data på olikartade sätt. De vanligaste kategorierna är relationsdatabaser (RDBMS) samt objektorienterade databaser (ODBMS). [11]

Relationsdatabaser är en databas som innehåller tabeller och kolumner som har en logisk relation till varandra. Information om ett specifikt område är placerade i en och samma tabell där alla egenskaper är beroende av en eller flera huvudnycklar. Flera tabeller kan sedan ha en relation mellan varandra. Relationsmodellen liknar människans sätt att tänka och därför finns det klara fördelar att använda den framför äldre hierarkiska modeller. [12]

ODBMS-modellen baserar sig istället på objektorienterade principer för hur man lagrar data. Med denna modell är data strukturerat på samma sätt som när man ska använda datat. Det behövs därför inte någon tidskrävande omvandling till ett lämpligt format. [13]

Det förekommer också en kategori som kallas ORDBMS (Object-Relational DBMS) som en del databasservrar använder sig av. Med denna modell kan man definieras egna datatyper och metoder. Man kan då spara datastrukturen på samma sätt som det används i likhet med ODBMS-modellen. [14]

2.2.2 Modeller för databasmodellering

I ett systemutvecklingsarbete brukar man använda sig utav olika modeller. Dessa används för att kunna avbilda det väsentliga i verkligheten. Med denna förenklade bild kan man sedan hantera komplexa problem.

UMLUML (Unified Modeling Language) är en standardiserad modell för informationsmodellering. Modellen används som ett verktyg för att strukturera samt visualisera informationssystemet som ska konstrueras.Huvudsyftet med UML är att se till att systemdesignen definieras innan man börjar med programmeringen. Använder man inte en strukturerad metod vid systemutvecklingsarbetet finns en stor risk att man ägnar för lite tid åt analys och designfasen och då för snabbt hoppar in i kodningsfasen.

Modellen använder sig utav ett objektorienterat tankesätt när man modellerar information. Detta medför att man kan återanvända kod och på så sätt kunna utveckla system i en snabbare takt. [15]

17(106)

Page 18: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

UML fungerar oberoende av programmeringsspråk samt vilken utvecklingsprocess man befinner sig i. Med hjälp av ett standardiserat UML-språk kan man beskriva det grafiska utseendet av informationen. Genom att använda olika diagramtyper kan man visualisera olika strukturer eller händelser. De vanligaste typerna är klassdiagram, objektdiagram, “use case”-diagram samt aktivitetsdiagram.

KlassdiagramKlassdiagrammet beskriver informationens struktur och dess relationer. Strukturen grupperas i olika klasser som kan bestå utav en eller flera objekt. Dessa objekt har olika attribut som beskriver en egenskap hos ett ojekt, t. ex. “färg” för objektet “bil”. Klassen som hanterar bil-objektet skulle kunna benämnas som “fordon”. Dessa klasser har relationer med varandra. Förutom att bestämma relationen mellan två klasser beskrivs också vilken information som krävs för att beskriva själva relationen. Klassdiagrammet beskriver översiktligt vilka klasser som finns och dess relationer.

ObjektdiagramObjektdiagrammet som är mycket snarlikt klassdiagrammet beskriver en del av klassdiagrammet; en fokusering inom ett specifikt informationsområde.

“Use case”-digram“Use case”-diagram används för att beskriva aktiviteter och dess aktörer. De brukar användas då man vill beskriva en specifik uppgift, t. ex. bilförsäljning där kunder, försäljare och leverantörer är aktörer.

AktivitetsdiagramAktivitetsdiagrammet visar olika typer av flöden. Det kan vara dels informationsflöden mellan olika aktiviteter och objekt och dels varuflöden. Ett vanligt användningsområde är verksamhetsbeskrivningar, t. ex. verksamhetsbeskrivningen i avsnitt 1.2.2. [16]

18(106)

Page 19: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

2.2.3 Normalisering

Det finns en del teorier och metoder för hur en god databasdesign bör se ut för att minimera logiska problem. Dessa benämns som normalformer där oftast de tre första brukar nämnas.

Första normalformen (1NF)Om upprepade kolumner existerar skall dessa tas bort och placeras i en speparat tabell. Detta gör man för att få en god struktur i tabellerna. En sådan åtgärd brukar benämnas som utbrytning av repetetiva attribut.

Andra normalformen (2NF)Den andra formen innebär att man inte ska använda överflödig information i en tabbell. Detta kan t. ex. vara att man anger kundnamn och kundadress i tabellen som hanterar en order. I ordertabellen bör det endast finnas med sånt som måste finnas med såsom exempelvis orderID och kundID. [17]

Tredje normalformen (3NF)Om ett attribut är unikt identifierbart med ett annat attribut som inte är en nyckel, strider detta mot den tredje normalformen. Man bör istället placera dessa två i en egen tabell. Nedanstående exempel visar brott mot tredje normalformen och dess lösning. [18]

Ej 3NF 3NF

Figur 2-1: Tredje normalformen

2.2.4 SQL

SQL (Structured Query Language) är ett språk som används för att hantera relationsdatabaser. Man kan med språket skapa, förändra samt hämta data. Språket utvecklades av IBM i början av 1970-talet och hette ursprungligen SEQUEL (Structured English Query Language). Namnet ändrades dock senare till SQL då det andra namnet redan var upptaget. Numera är SQL utökat med funktioner som hanterar den objekt-orienterade databasmodellen.

Språket baserade sig på publikationen “A Relational Model of Data for Large Shared Data Banks” av Dr. Edgar F. Codd som 1970 definieraderelationsdatabasmodellen. Dr. Codd, som arbetade som forskare på IBM skapade ett stort intresse med teorin då det fanns stora ekonomiska fördelar jämfört med tidigare modeller. IBM skapade sedan ett språk baserat på dessa principer, vilket 1992 blev en ISO-standard i sammarbete med ANSI som redan definierat en standard 1989. Sedan dess har ett flertal revideringar av standarden

19(106)

Datorkomponent

*KomponentIDProduktnamnLeverantörLeverantörsadress

Datorkomponent Leverantör

*KomponentID ProduktnamnLeverantör

*LeverantörLeverantörsadress

Page 20: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

genomförts.

Språket är designat för att styra databaser och är definionsmässigt inget fullständigt programmeringsspråk, men trots detta går det att åstadkomma avancerade databasoperationer. Genom att använda sig av kommandon (ibland benämnda som frågor) samt nyckelord kan man hantera databasen och dess innehåll. [19]

DMLKommandon som hanterar databasens data kallas DML (Data Manipulation Language). Med detta avses operatorerna lägg till, uppdatera och ta bort. Denna kategori är den största delen av SQL. [20]Alla frågor avslutas med semikolon. Nedanstående kommandon är de vanligast förekommande:

SELECTHämtar ingen eller flera rader av data. Eftersom man oftast är intresserad av data som uppfyller vissa krav (t. ex. de produkter som ligger inom ett viss prisintervall i ett e-handelssystem) finns en mängd nyckelord. De mest frekvent använda är följande:

• FROM Beskriver vilken tabell som information ska hämtas ifrån.

• WHERE Beskriver vilken information man är intresserad av.

• LIKE Beskriver data som innehåller en definierad sträng.

• ORDER BY Ordnar informationen (storleksordning, bokstavsordning) i stigande eller fallande ordning.

• GROUP BY Beskrivning om vilken kolumn som man ska gruppera kring.

• HAVING En metod som används för att filtrera grupperad data, ofta med hjälp av hjälpfunktioner som t. ex. COUNT().

Utöver dessa nyckelord förekommer hjälpfunktioner som utför vanliga matematiska operationer baserat på de utplockade posterna. Man använder sig också av logiska operatorer samt “regular expressions”, för att kunna beskriva de villkor som gäller för den eftersökta informationen.

Ett exempel på ett SELECT-kommando:

SELECT * FROM Order WHERE KundID= 13543 AND Orderdatum != “2005-04-02” ORDER BY OrderID ASC;

Detta kommando hämtar all information om de ordrar som finns ifrån tabellen Order för kunden med kundnumret 13543, förrutom de som lagts 2005-04-02. Dessutom ordnas informationen i stigande ordning

20(106)

Page 21: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

baserat på OrderID-kolumnen.

INSERTDetta kommando används för att lägga till data till tabellen. Man använder sig likt SELECT- kommandot av nyckelord. De som finns beskrivs nedan.

• INTO Anger vilken tabell som data skall placeras.

• VALUES Anger att data ska anges

För att ange vilken tabell, vilka kolumner och vilken data som skall matas in i tabellen används parenteser med kommaseparerat innehåll. Ett exempel nedan demonstrerar INSERT-kommandot.

INSERT INTO Order (OrderID, KundID, Datum) VALUES (223936, 13543, “2005-04-07”);

Kommandot lägger till data för en ny order i tabellen Order. Själva orderinformationen (vilka produkter och antal) anges i en annan tabell då man bryter ut repetetiva attribut.

UPDATEKommandot UPDATE används för att ändra i en redan skapad rad. Man brukar använda sig av nyckelordet WHERE för att ange vilken information som ska ändras. Följande exempelvis visar kommandots struktur.

UPDATE Order SET KundID=”34556” WHERE OrderID=”223936”;

Kommandot ändrar kundID:t till 34556 för den post som har OrderID:t 223936.

DELETEDetta kommando raderar en eller flera poster i en tabell. I nästan alla fall används WHERE-nyckelordet för att undvika radering av alla existerande poster i tabellen. Exemplifiering av kommandots utseende nedan.

DELETE FROM Order WHERE OrderID=”277936” ;

Detta kommando raderar den post som beskriver Ordernr. 277936. Följande kommando förstör dock det informativa system som numreringen representerar. Det kommer inte längre finnas 277936 stycken ordrar lagda i systemet då man tagit bort en eller flera. I vissa fall är det motiverat att i en extern miljö använda en funkion som indexerar om alla poster så att numret stämmer. Eftersom detta är en komplicerad åtgärd för CPUn, är det inte en god metod om det handlar om stora mängder data. Man kan exempelvis istället räkna alla poster med COUNT() för att få den efterfrågade informationen. [19]

21(106)

Page 22: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

DDLEn annan kategori av SQL-kommandon är de som har benämningen DDL (Data Definition Language). Med detta menas de kommandon som hanterar och definierar den datastruktur som ska beskriva informationen. I praktiska ordalag handlar det om vilken uppbyggnad en tabell har; vad den ska heta, vilka variabeltyper som används för kolumner samt egenskaper som nycklar samt annat som har med själva tabellens funktionalitet att göra. Dessa kommandon är främst CREATE, DROP och ALTER. [20]

CREATEKommandot som skapar en tabell i en databas. Ett exempel nedan demonstrerar hur det används:

CREATE TABLE Företagsuppgift ( FöretagsuppgiftID TINYINT UNSIGNED NOT NULL PRIMARY KEY, Företagsnamn VARCHAR(20),

Adress VARCHAR(20),Postnummer VARCHAR(10), Ort VARCHAR(20), Telefonnr VARCHAR(15), Mobiltelefonnr VARCHAR(15),Epostadress VARCHAR(50), Organisationsnr VARCHAR(20), Momsregnr VARCHAR(20), Bankgiro VARCHAR(15),Postgiro VARCHAR(15)

);

Kommandot skapar tabellen Företagsuppgift, där FöretagsuppgiftID är nyckeln. Med nyckelordet “NOT NULL” anges att attributet måste matas in. Gör man inte det skapas inte posten i tabellen.

Likt programmerings-språket C beskrivs vilken datatyp som skall användas för varje attributet. En unsigned tinyint motsvarar en unsigned char i C (8 bitar). Variabeltypen VARCHAR är en strängvariabel där man anger längden (antal tecken) inom parentesen. Lagringsmässigt tar en VARCHAR upp (antal_tecken + 1) Byte. [17]

CREATE används också då man från början skapar databasen:

CREATE DATABASE Quickmatch;

DROPDetta kommando raderar en tabell eller databas. Nedanstående exempel visar dess användning där man först raderar tabellen “Företagsuppgift” och sedan databasen där tabellen fanns.

DROP TABLE Företagsuppgift;

DROP DATABASE Quickmatch;

22(106)

Page 23: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

ALTERKommandot ALTER används för att ändra egenskaper för en tabell, t. ex. ta bort en kolumn, lägga till en kolumn eller specificera att ett särskilt attribut måste matas in. Med hjälp av nyckelorden ADD, DROP eller CHANGE åstadkomms detta. Detta är exemplifierat nedan.

ALTER TABLE Företagsuppgift, ADD COLUMN Företagsbeskrivning VARCHAR(100), CHANGE Epostadress epost VARCHAR(50) NOT NULL, DROP COLUMN Mobiltelefonnr;

Kommandot lägger till kolumnen “Företagsbeskrivning”, ändrar egenskaperna (attributnamnet och “NOT NULL”-egenskapen) för attributet “Epostadress” samt tar bort kolumnen “Mobiltelefonnr”. [19]

DCLDen sista kategorin som beskriver SQL-kommandon är DCL (Data Control Language). Den hanterar det behörighetssystem som finns i databasservern. [21]

Med hjälp utav kommandona GRANT och REVOKE kan man beskriva vad respektive användare kan komma åt i databasen. Med GRANT ger man behörighet, medan med REVOKE tar man bort behörigheter. Exemplet nedan demonstrerar syntaxen.

GRANT FULL PRIVILEGES ON Quickmatch.* TO mysql@localhost IDENTIFIED BY 'lösenord' WITH GRANT OPTION;

Kommandot ger alla rättigheter för databasen “Quickmatch” till användaren “mysql” på den lokala datorn. Som åtkomstmetod sätts ett lösenord. [19]

2.2.5 Databasservrar

Nedanstående databasservrar baserar sig främst på relationsdatabasmodellen. Denna kategori är i dagsläget den vanligaste och därmed fokuseras området.

IBM DB2IBMs databasserver DB2 har funnits sedan början av 1980-talet. Den var den första som använde sig av det standardiserade språket SQL. Servern baseras på ORDBMS och hanterar därför även egendefinierade datastrukturer.

Servern går att köra på ett flertal plattformar, bl. a. på UNIX-system, Windows och Linux. Det går att adminstrera dels via en kommandotolk och dels via GUI (Graphical User Interface). Databasservern har ett stort API-stöd (Application Programming Interface), bl. a. C,C++, Fortran, Java, Perl, Python, PHP och .NET. [22]

23(106)

Page 24: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Microsoft SQL serverMicrosofts databasserver SQL server baserade sig ursprungligen på databaskod ifrån programvaran Sybase SQL server som Microsoft sedan byggde vidare på. Serverprogramvaran finns i ett flertal olika versioner för olika tillämpningar, dock endast till Windowsplattformen.

Databasen baserar sig på relationsmodellen men till skillnad från de flesta andra databasservrar baserar det sig inte på SQL, utan något som kallas för T-SQL (Transact-SQL). Detta språk är en utbyggnad av det standardiserade SQL-92.

En fördel med serverprogramvaran är om man baserar hela sin verksamhet på Windowsplattformen då servern är starkt bunden till operativsystemet. [23, 24, 25]

MySQLMySQL är en databasserver som främst utvecklas av det svenska MySQL AB. Programvaran använder sig av open sourcemodellen som utvecklingsmodell. Detta innebär att all källkod till programmet är öppet för alla och det är tillåtet att göra egna modifierar. Programmerare i hela världen är med och utvecklar programvaran, något som gör att utvecklingen framskrider i en hög hastighet då inte bara anställda i företaget arbetar med koden.

På senare år har programvaran blivit mycket populär för webbaserade system, t. ex. LAMP-servrar (Linux Apache MySQL PHP). Den har också blivit populär för större databasdrivna system; bl. a. använder sig NASA, Google, Dow Jones (amerikanska börsen) samt Ericsson av programvaran.

MySQL använder sig av något som kallas dubbel licensmodell. Förrutom open sourcelicensen som kräver att källkoden ska vara öppen och fri finns även en kommersiell licens. Denna används av företag som vill använda databasservern i sin produkt men som vill tillämpa closed sourcemodellen där koden inte är fri. Denna licensmodell kostar pengar.

Databasservern baserar sig på relationsmodellen och har både ett kommandotolkgränssnitt och ett GUI. Den använder sig av SQL som databasspråk, vilket till och med anges i servernamnet. [26]

OracleOracle är en databasserver som likt de flesta andra servrar på marknaden baserar sig på relationsmodellen. Servern introducerades 1977 och har varit en av de största aktörerna på marknaden. Oracle brukar främst användas för tyngre databasdrivna applikationer då den har väldigt avancerade funktioner.

Servern har ett stort plattformsstöd, där bl. a. UNIX, Windows, Mac OS X och Linux finns med bland de utmärkande operativsystemen. Databas-applikationen var den första kommersiella RDBMS som implementerade Linuxstöd.

Oracle likt andra databasservrar använder sig utav SQL som språk för

24(106)

Page 25: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

att hantera databasen. [27,28]

2.3 Sidbeskrivningsspråk

2.3.1 HTML

HTML (Hyper Text Markup Language) är en standard samt ett språk som används för strukturering av text, ljud, bild och inbyggda objekt i exempelvis webbsidor eller e-post. Texten inkapslas i så kallade HTML- taggar som gör att texten, områdena i dokumentet samt innehållet får en struktur.

Standarden HTML styrs från W3C (World Wide Web Consortium) som har hand om definitionen av nya standarder såväl som ansvar för modifiering av befintliga standarder. En annan organisation som har ännu bredare uppgift och ansvar är IETF (Internet Engineering Task Force). Deras uppgift är att ta hand om samt definera Internetteknologi. [29]

Skapandet av HTML sker av författaren som bestämmer hur strukturen kommer att se ut medan läsaren i sin tur kan styra hur innehållet skall presenteras. Filerna som skapas i HTML-formatet sparas med filändelsen “.htm” eller “.html”. Dessa filer innehåller taggarn som webbläsaren använder för att tolka och därefter presentera.

HTML innehåller fyra olika typer av taggar där varje tagg måste vara omringad med tecknen ”< >”. Nedanstående punktlista beskriver de kategorier av taggar som finns.

• Strukturmärken: Beskriver textens storlek, t. ex. <h1>Hello</h1>

• Presentationsmärkning: Beskriver stil på texten, t. ex. <i>Kursiv stil</i>

• Hyperlänkanmärkningar: Används för att referera till en annan sida, webbplats eller på Internet, t.ex. <a href=”http://ing.hj.se”>Ingenjörshögskolan</a>

• Interaktiva element: Nyttjas vid skapandet av knappar, listor samt interaktiva objekt. [30]

De mest grundläggande taggarna som används vid HTML-kodning av anges nedan.

<html> Varje HTML-sida börjar alltid med “<html>”-taggen. Det är den som talar om för webbläsaren att innehållet är ett dokuent i HTML-format.

<head> Definerar information om dokumentet.

25(106)

Page 26: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

<title> Används för bestämning av titeln för dokumentet.

<body> Definerar “body”-elementet.

<h1>-<h6> Anger storlek på rubriker; från rubrik1 till rubrik6, där rubrik1 har största storleken på tecknen.

<hr> Infogar en horisontell linje.

<p> Definerar en paragraf.

<br> Skapar en radbrytning.

<img> Definerar en bild.

<table> Används vid definition av en tabell.

Taggarna ovan är början på en HTML tagg men varje tagg måste också avslutas. Om man skapar exempelvis en “<table>”-tagg skall den avslutas med en “</table>”-tagg i slutet av tabellen. Det talar om för webbläsaren att tabellen är slut och att webbläsaren kan fortsätta tolka resten av koden. [31]

Skaparen bakom HTML heter Tim Barners-Lee som vid CERN (The European Laboratory for Particle Physics) uppfann HTML år 1989. Det möjliggjorde att man kunde utbyta samt presentera text och media i en struktur istället för fragmanterad text, ljud och bild. [32]

2.3.2 CSS

CSS (Cascading Style Sheets) används för att ändra utseende på en befintlig webbsida. Det skapades för att möta kraven från webbdesigners och användarna.

CSS har funnits på webben sedan 1994 då CSS1-versionen skapades. Idag används version CSS2 som stöds av de flesta webbläsare på marknaden. Skaparna bakom CSS heter Håkon Wium Lie och Bert Bos.

Genom att infoga en CSS fil i t. ex. ett HTML-dokument kan man bestämma utseende på webbsidan utan att behöva skapa nya taggar. Tekniken nyttjas för att anpassa dokumentet till skärmupplösning, färgdjup, installerade typsnitt samt hänsyn till datoryp.

Så gott som alla dagens webbplatser använder CSS. För att infoga en CSS stilmall i ett HTML-dokuemnt kan man skriva följande:

<link rel=”stylesheet” type=”text/css” href=”style.css”>

Raden ovan specificerar att webbläsaren skall tolka filen som en stilmall av typen ”text/css”. Sökvägen till CSS-filen skrivs efter ”href”-deklarationen. Förutom att CSS styr layout på en webbsida, bidrar den till överskådligare HTML kod samt resulterar i en snabbare

26(106)

Page 27: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

laddning av sidan. [33]

En CSS syntax består av tre delar: en ”selector”, ett “property” samt ett “value”.

Selector {property: value}

Selector är vanligtvis en HTML-tagg som defineras medan “property” är attribut som skall ändras, där varje egenskap kan innehålla ett värde. Värdet och egenskapen är separerade med kolon och är omringande med måsvingar ”{}”:

body {color: black}

Exemplet ovan betyder att body i dokumentet skall ha svart bakgrund.Om ett värde innehåller flera ord måste dessa skrivas inom citationstecken t. ex enligt nedanstående exemplifiering:

p {font-family: ”sans serif”}

Om det är mer än en egenskap som skall defineras måste egenskaperna separeras med semikolon. Exemplet nedan visar hur man skriver en centrerad text i blå färg samt med teckensnittet Arial.

p { text-align: center; color: blue; font-family: arial}

Man kan även gruppera flera selectors genom att separera selectors med kommatecken:

h1,h2,h3,h4 { color: red}

Med en “class selector” går det att definera olika stilar för en och samma HTML-element. Om man exempelvis vill skapa hyperlänkar vars understrukning skall försvinna när man för över muskpekaren över länken, skrivs följande:

a:link { text-decoration: underline; color: blue}a:visited {text-decoration: underline; color: blue}a:active {text-decoration: underline; color: red}a:hover {text-decoration: none; color: blue}

Det går även att infoga kommentarer i CSS stilmallar för att förklara koden. Detta underlättar vid framtida kodbearbetning. Kommentaren ignoreras av webbläsaren. En CSS kommentar börjar med ”/*” och slutar med ”*/”. En kommentar kan se ut enligt följande exempel:

/* Detta är kommentar */p {text-align: center;

27(106)

Page 28: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

/* En ytterliggare kommentar */color: red} [34]

2.3.3 XHTML

XHTML (Extensible Hyper Text Markup Language) är en vidareutveckling av HTML. Språket är inspirerat av XML (Extensible Markup Language).

Det nya alternativet erbjuder webbutvecklarna att designa och definera innehållet mer konkret; t. ex. boktitel, publikations datum och andra definitioner som liknar en databasstruktur istället för att presentera dem som kursiv, fet, blå text. Den största skillnaden mellan HTML och XHTML är standarden som bestämmer taggarnas utseeende. Medan HTML är mer ”förlåtande”, är XHTML strikt i sin form. Dessa skilnader omfattar att:

• Alla taggar måste vara ihopparade eller har ett sluttagg ”/>”.

• Alla attribut skrivs inom citationstecken.

• Alla attribut måste presenteras som par: namn=”värde”

• Alla taggar och attribut måste skrivas som gemener.

Attribut är egenskaper som förändrar beteende för en specifik tagg. Om man vill förändra bredden på en horisontell linje ”<hr>” kan man bestämma dess bredd med attributen ”width”; t.ex. <hr width=”30%” />. [35]

Det finns tre olika versioner av XHTML 1.0 vilka motsvarar respektive HTML 4.01 versioner:

• XHTML 1.0 Strict är den versionen av XHTML som skiljer sig mest från HTML där många element och attribut som används i HTML 4.01 är borttagna.

• XHTML 1.0 Transitional är skapad för att underlätta övergången från HTML. Den tillåter att vissa element och attribut som inte används i XHTML 1.0 Strict kan användas; t. ex. <center>, <u>, <strike> och <applet>.

• XHTML 1.0 Frameset låter som namnet antyder skaparen att använda ”fremesets” precis som i vanliga HTML.

Vid kodning av XHTML är det viktigt att stänga alla taggar. Några av de mest förekommande felen som webbutvecklare gör är beskrivna nedan.

• Element utan sluttaggFel: <br>Rätt: <br />

28(106)

Page 29: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

• Ej avstängning av element som inte är tomma.Fel: <p>Paragraf 1.<p>Paragraf 2Rätt: <p>Paragraf 1.</p><p>Paragraf 2.</p>

• Utebliven specifikation av alternativ text för bilder.Fel: <img src=”img/bil.jpg” />Rätt: <img src=”img/bil.jpg” alt=”Volvo” />

• Skrivning av text direkt i body-delen av dokumentet.Fel: <body>Välkommen till vår hemsida.</body>Rätt: <body><p>Välkommen till vår hemsida.</p></body> [36]

2.4 Implementationer av HTTP-protokollet

2.4.1 Servrar

En webbserver är en nätverkstjänst som främst förmedlar HTML-filer till sina klienter med hjälp utav HTTP-protokollet. Klienter skickar så kallade “HTTP Requests” till servern där det efterfrågade anges. Servern skickar tillbaka ett svar med hjälp av ett “HTTP Response”.

Det efterfrågade datat kan vara i princip vad som helst, men de mest vanliga typer av data är HTML-filer, CSS-filer samt bilder som sedan klienten tolkar.

De vanligaste serverprogramvarorna beskrivs nedan. De utgör tillsammans en mycket stor andel av Internets webbservrar. [37]

ApacheApache är i dagsläget den mest populära servern. Den baserar sig på open sourcemodellen och är därmed tillgänglig för alla att använda och modifiera. Programvaran baserades ursprungligen av koden till NCSA HTTPd 1.3 som en grupp människor via Internet började patcha, då utvecklingen av programvaran gick för långsamt. Dessa patchar koordinerades och till sist döptes projektet till Apache. Numera finns det inte kvar någon NSCA-kod i projektet då hela apache har skrivits om ifrån grunden i och med apache 2.x-serien. [38]

Servern kan på grund av den öppna källkoden köras på ett stort antal operativsystem. Programvaran har därför också fått många utökningar genom ett modulsystem. Några mycket vanliga utökningar är PHP och SSL som moduler samt Perl och Python via CGI-interfacet. [39]

Den organisation som adminstrerar Apacheprojektet heter Apache Software Foundation. Det skapades 1999 och är en ideell organisation med syftet att koordinera utvecklingen av apacheprojektet. En annan funktion som organisationen har är att skydda utvecklare mot potetiella legala tvister, samt se till att apachevarumärket inte missbrukas av företag. [40]

29(106)

Page 30: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

IISIIS (Internet Information Services) är en servertjänst av Microsoft som hanterar ett flertal olika protokoll. De vanligaste av dessa är HTTP och secure HTTP, FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol) samt NNTP (Network News Transfer Protocol). [41]

Serverfunktionaliteten för dessa protokoll finns att tillgå via något som kallas för ISAPI (Internet Service Application Programming Interface). Detta API anropas av IIS när t. ex. när en inkommande klient-PDU (Protocol Data Unit) tas emot. [42]

ASAPI baserar sig på Three-tier arkitekturen, som baserar sig på principen om modularitet samt klient-serverteknologi. Med detta menas att användargränssnitt, affärslogik, datalagring samt dataåtkomst utvecklas i separata moduler. Syftet med detta är att minimera beroendet mellan de olika delarna, något som medför att man kan köra modulerna på separata plattformar. Ska man porta något till en annan plattform behöver man inte skriva om all kod utan endast t. ex. Användar-gränssnittet. En annan stor fördel med denna modulariserade arkitektur är att man kan skriva om delar av koden vid teknikskiften och därmed snabbt kan anpassa sig till nya förhållanden. [43, 44]

IIS stöder förrutom vanlig HTTP-funktionalitet också tjänster för dynamiskt genererade webbsidor där ASP och ASP.NET är stödda av Microsoft. Tredjepartleverantörer har skapat stöd för PHP och Perl till serverprogramvaran. En nackdel med ISS är dock att den enda plattformen som stöds är Microsoft Windows. [45]

ZeusZeus är en webbserver som skapats av företaget Zeus Technology. Den finns till Linux och UNIX-plattformen och har ett välutvecklat stöd för virtualhosting samt möjligheten för att köra ett stort kluster.

Programvaran har vunnit prestandatester och anses som en av de snabbaste på marknaden. Servertjänstens inriktning är stora webbsystem som har höga krav på prestanda, tillförlitlighet och säkerhet. [46]

Zeus stöder ett stort antal olika gränssnitt. Det stöder CGI, FastCGI, NSAPI, ASAPI, SSI, Java servlets, Front page extentions samt PHP. I och med CGI-gränsnittet stöder det därmed också Perl. En nackdel är dock priset som börjar på 1700 dollar för en server. [47]

30(106)

Page 31: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

2.4.2 Klienter

Internet Explorer

HistoriaMSIE (Microsoft Internet Explorer) är en webbläsare som utvecklats av Microsoft. Webbläsaren är inbyggd i operativsystemet Microsoft Windows och är idag den mest använda webbläsaren på Internet. Den har sina rötter från Spyglass Inc. (version av Mosaic) som Microsoft licensierade 1995.

Den första versionen av Internet Explorer lanserades i Augusti 1995. Den andra versionen i raden innehöll stöd för SSL, cookies, VRML samt Internet-nyhetsgrupper. Internet Expolorer 3.0 har sedan Windows 95 OSR2 (Operating System Release 2) varit inbyggd i operativsystemet och därmed blev gratis. Nyheterna i tredje utgåvan var bl. a. Internet Mail, News 1.0, Adressbok, Microsoft Netmeeting, Cascading Style Sheets samt stöd för Windows Media Player. Versionen 4 lanserades i Oktober 1997 med den största nyheten att man kunde aktivera “Active Desktop”, som kunde visa webbinehåll på skrivbordet. Ett år senare presenterades version 5 med stöd för XML/XSL, “bi-directional text” , “ruby text” samt CSS 1 och 2.

FramtidSenaste versionen i skrivande stund är Internet Explorer 6 men utgåvan av Internet Explorer 7 är under utveckling och kommer att lanseras som testversion under sommaren 2005. Webbläsaren har under en tid tillbaka utvecklats även för andra operativsystem såsom för Macintosh, Solaris och HP-UX (Hewlett Packard – UNIX). Utvecklingen för de övriga operativsystemen har avbrutits och fokusering ligger nu enbart på Windows.Användning av IE har fram till 2004 varit i stor majoritet och det är det fortfarande idag, dock börjar IE tappa andelar allt mer för allternativa webbläsare som Mozilla Firefox, Safari och Opera. Utgåvan av Internet Explorer 7 förväntas fungera under Windows XP, Windows Server 2003 SP 1 men framförallt för framtida operativsystemet som går under benämningen Longhorn som väntas bli klart år 2006.

FinesserInbyggda finesser som hittas i Internet Explorer är bl.a följande:

• Inbyggd FTP-klient.

• Förhandsgranskning av utskrift.

• Pop-up blocker (enbart för SP2).

• Automatisk uppdatering av tillägg.

• Stöd för tillägg såsom Flash, Shockwave och Jscript.

31(106)

Page 32: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

• Möjlighet att acceptera eller avböja kakor (coockies).

WebbstandarderTrots många år på nacken har Microsoft inte lyckats utveckla Internet Explorer så att det följer alla rekommendationer. HTML och CSS är fortfarande inte implementerade korrekt och är ofullständiga. Det saknas stöd för exempelvis “<abbr>”-taggen i HTML 4.01 standarden samt “float-margins” som är standard för CSS1.

Vidare saknas det stöd för PNG-alfakanal som resulterar att transparansen visas i grått, vitt eller annan färg beroende vilken bildredigerare som har använts. Övriga bildformat som inte stöds fullt ut är JPEG där det saknas stöd för visning av progressiv JPEG.

Internet Explorers stöd för XHTML är begränsat trots att XHTML 1.0 är bakåtkompatibel med HTML 5.0. Om en XHTML-sida är kodad med den nya MIME-typen “application/xhtml+xml”, känns den inte igen av IE, utan tolkas som en nedladdningsfil istället. Problemet löses genom att koda webbsidan på det gamla sättet med MIME typ text/html eller att manuellt redigera i Windows registret för att anpassa IE till de nya kraven.

Passering av innehåll i HTTP 1.1 stöds inte fullt ut av Internet Explorer då webbläsaren inte kan specificera i sina anrop vilka MIME typer och encodings den kan acceptera.

Med tanke på att Internet Explorer är utvecklad med stor feltolerans har det också bidragit att webbläsaren inte kan tolka webbsidorna som är kompatibla med W3Cs standarder. I värsta fall kan webbläsaren krascha på grund av detta. Några buggar är dock åtgärdade i IE för Windows XP. [48]

Mozilla Firefox

Mozilla Firefox är en plattformsoberoende webbläsare som är utvecklad av Mozillastiftelsen tillsammans med hundratals frivilliga utvecklare. Det var Dave Hyatt och Blake Ross som startade utvecklingen av Firefox projektet som ett experimentellt område under Mozilla projektet. Nuvarande ledare för utvecklingen av Mozilla Firefox är Ben Goodger.

Webbläsaren använder XUL (XML User Interface Language) gränsnitts-språket, vilket gör det möjligt att kunna byggas ut med olika tillägg. Renderingsmotorn som används i webbläsaren är Mozillas egna så kallade “Gecko layout engine”.

Första utgåvan av webbläsaren gick under namnet Phoenix som lanserades 1:a September 2002. Eftersom det redan fanns ett företag under samma varumärke som utvecklade BIOS-system, byttes namnet

32(106)

Page 33: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

till Mozilla Firebird. Det visade sig senare att Firebird var namnet på en databas-server och för att undvika förvirring byttes namnet till Firefox i December 2003.

Första utgåvan (v. 1.0) av Firefox presenterades 9:e November 2004. Innan den lanserades fick den stor mediauppmärksamhet genom Forbes och Wall Street Journal. Reklamkampanjen resulterade i över 25 miljoner nedladdningar av webbläsaren på 14 veckor. Idag är Mozilla Firefox en av de mest använda open source-applikationerna.

FramtidInternet Explorer är den mest utspridda webbläsaren på marknaden idag, men Mozillastiftelsen hoppas att webbläsaren kommer att stå för 10% av användningen på Internet i slutet av 2005. Målet som Mozilla har satt upp är enligt analysföretaget WebSideStory realistiskt och uppnåeligt. FinesserFirefox har finesser såsom tabbad bläddring, “live bookmarks”, “pop-up blocker”, stöd för web standarder samt en utbyggnadsfunktion som möjliggör förändring av funktionaliteten i webbläsaren. Tabbad bläddring innebär att användaren inte behöver öppna flera fönster för att surfa på flera olika sidor på Internet. Istället används flikarna som gör det möjligt för användaren att i ett och samma fönster befinna sig på flera olika sidor samtidigt. I övrigt finns det även möjligheter att installera Firefox på en USB-disk, MP3 spelare, extern hårddisk, ZIP enhet eller på en CDRW skiva. Projektet är utvecklad av John Haller och kallas för Portable Firefox.

StandarderMozilla Firefox stöder nästan alla W3Cs rekommendationer. Standarder som stöds av Firefox är HTML, XHTML, CSS, JavaScript, MathML (Mathematical Markup Language), XSL (eXtensible Stylesheet Language) och Xpath (XML Path Language). Dessutom har Firefox stöd för PNGs alfa kanal, vilket saknas helt i Internet Explorer. Förutom de mest vanliga rekommendationerna har Mozilla Firefox även stöd för CSS Level 3 som redan är implementerad i senaste versionen av webbläsaren. Firefox-teamet har jobbat vidare och utvecklat stöd för nya standarder som SVG (Scalable Vector Graphics), APNG (Animated Portable Network Graphics) samt Xforms. [49]

Safari

HistoriaWebbläsaren Safari är utvecklad av företaget Apple Computer, Inc. och är enbart kompatibelt med Apples egna operativsystem Mac OS X. Fram till Juni 2003 har Microsoft utvecklat Internet Explorer för Mac, men efter att Microsoft avbröt utvecklingen togs IE bort som standardwebbläsare ifrån Mac OS X. Första beta av Safari (v. 0.8) publicerades den 7:e Januari 2003 på Macworldkonferensen. Den 23:e

33(106)

Page 34: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Juni 2003 blev Safari standardwebbläsare i Mac OS X med många finesser samt utvecklat stöd för webstandarder.

Den interna layoutmotorn WebCore är lanserad under GNU Lesser General Public License som resultat av att Safaris kod för rendering av webbsidor är baserat på Konquerors KHTML-motor. Även andra delar av koden som Apple har förbättrat har släppts fritt, men källkoden för resten av webbläsaren finns ännu inte tillgänglig.

FramtidSenaste versionen av Safari 2.0 är under utvecklig och väntas bli klart den 29:e April 2005. Senaste utgåvan kommer att lanseras tillsammans med Mac OS X v10.4 och kommer att få stöd för RSS (Really Simple Syndication eller Rich Site Summary) samt Atom-läsare.

FinesserUtvecklarna bakom webbläsaren Safari har lagt mycket krut på finesser och användarvänlighet. Bland innovativa funktioner finner man ett “+”- tecken vid adressfältet som gör det möjligt att lägga den aktuella webbsidan i bokmärken. Direkt i adressfältet finns det möjlighet att se vad webbsidan har för innehåll. Om man besöker en webbplats som skickar ut RSS visas en ikon som indikerar och informerar besökaren om att sidan visas som en RSS sida. Sedan finns det möjlighet att visa längden på en RSS sida, sortera den efter tid, datum, titel och källa direkt i webbläsaren. Den framtida versionen 2.0 kommer att erbjuda privat bläddring (som inte lagrar information om vilka sidor som har besökts), möjlighet att söka igenom bookmärken, möjlighet att arkivera och maila webbsidorna samt en hastighet som kommer att vara 1.8 gånger snabbare än i version 1.2.4. I skrivande stund är Safari dessutom den snabbaste webbläsaren på marknaden enligt Apple.

StandarderSafari är utvecklat med bra stöd för W3Cs rekommendationer. Stöd av PNG stöds fullt ut av Safari; både full alfa och gamma. Vidare stödjer Safari CSS, DHTML, DOM nivå1 och XML redan från betaversionen (Februari 2003). [50]

2.4.3 Dynamisk webbfunktionalitet

ASPASP (Active Server Pages) är ett scriptspråk som skapats av Microsoft för att skapa dynamisk webbfunktionalitet till IIS. Det skapades 1996 och har sedan dess reviderats tre gånger. Den sista revideringen ledde till ASP.NET som numera håller på att ta över det gamla ASP (brukar benämnas som “classic ASP”).

Både ASP och ASP.NET har databasgränssnitt till olika databaser. Ofta används gränsnittet ODBC (Open DataBase Conectivity), som är ett standardiserat gränsnitt för att ansluta till DBMS.

34(106)

Page 35: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Den senaste versionen av det gamla ASP (ASP 3.0) har sex stycken inbyggda objekt som är uppdelade efter användningsområde. Dessa är:

• Application

• ASPError

• Request

• Response

• Server

• Session

Genom att anropa dessa kan programmeraren hantera serverns funktionalitet.

De flesta ASP-sidor är skrivna i VBScriptspråket. Microsoft har även skrivit ett ytterligare språk som baserar sig på JavaScript som de kallar Jscript. Tredjepartsleverantörer har även skapat stöd för andra språk, bl. a. Perl. [51]

ASP.NET är en vidareutveckling av ASP. Den största skillnaden är att ASP.NET inte längre är ett scriptspråk som översätts av servern medans det exekveras. Istället kompileras koden innan exekvering för att servern ska kunna arbeta mer effektivt.

En annan stor skillnad mellan ASP och ASP.NET är att ASP.NET använder sig förutom de gamla ASP-språken också av andra språk, bl. a. Visual Basic.NET och C#. Då .NET består av ett stort antal kontroller och klasser finns ett stort utbud av funktioner man kan anropa. Utvecklingen av webbsidor sker i ett GUI där en stor del av koden automatgenereras. Programmeraren placerar ut ett objekt i ett fönster och skriver kod som hanterar dess funktionalitet.

Alla versioner av ASP stöder endast Windowsplattformen. I likhet med alla andra Microsoftprodukter får man inte tillgång till någon källkod för programvaran. [52]

CGICGI (Common Gateway Interface) är ett gränsnitt som gör det möjligt att skapa dynamiska webbsidor. Med hjälp av detta gränsnitt kan man använda språk såsom t. ex. C, C++, Perl och Python. CGI är ett neutralt gränsnitt utan några preferenser. Gränsnittet är implementerat i webbservern som skapar en ny process för en anslutande klient och anropar därefter det efterfrågade programmet/skriptet. Processen avslutas efter en förfrågan. [53]

Eftersom processkapandet är en tidskrävande åtgärd i ett operativsystem har FastCGI skapats. Det är en öppet tillägg som stöder de flesta webbservrar. Istället för att skapa och stänga processen efter varje request köas dessa för en klient. Detta påskyndar uppstarten, men en nackdel är dock att klienten måste

35(106)

Page 36: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

vänta på att alla föregående requests i kön exekverats klart innan svar kommer. En annan funktionalitet med FastCGI är att man kan utföra vissa åtgärder innan svar lämnas till klienten, exempelvis att skriva till en fil. [54, 55]

JSPJSP (JavaServer Pages) är en Javabaserad teknologi som skapats av Sun Microsystems med syftet att kunna skapa dynamiska webbsidor. Den använder sig av så kallade Java Servlets för sin funktionalitet. En servlet är ett Javaprogram som webbservern anropar vid en klientförfrågan. Man kan se funktionaliteten som en vidareutveckling av CGI-gränsnittet med syftet att skapa en effektivare server samt tillhandahålla funktioner som t. ex. sessionshantering.

Det finns en mängd olika implementationer av JSP till olika webbservrar. Dessa brukar benämnas som Servlet containers, vilket avser den del av webbservern som hanterar Java servlets som beskrivits ovan. De mest använda implementationerna listas nedan.

• iPlanet En kommersiell implementation av Sun/Netscape.

• Jakarta Tomcat En opensourcebaserad variant som baserar sig på webbservern Apache.

• Jboss En kommersiell opensourcebaserad implementation av företaget Jboss Inc. Då företagets affärsmodell är inom serviceområdet är produkten fri att använda för alla.

• Websphere En kommersiell produkt av IBM.

JSP-kod kompileras med hjälp utav en JSP kompilator till en servlet. En sådan skapas genom att man först konverterar JSP-koden till Javakod som i sin tur kompileras av en Javakompilator. Ett alternativ till detta är att JSP-kompilatorn kompilerar koden direkt till en färdig servlet. Kompileringen sker normalt då en specifik jsp-fil efterfrågas, men möjligheten att kompilera i förväg finns också av prestandamässiga skäl.[56,57,58]

PHPPHP (PHP: Hypertext Preprocessor) är ett open sourcebaserat programmeringsspråk som främst används för att skapa dynamiska webbsidor. Det har en syntax som är ett mellanting mellan C, Perl och Java. I och med att det liknar de flesta vanliga programmeringsspråken anses det vara lätt att komma igång med. En ytterligare faktor som påskyndar inlärningen är att språket inte kräver någon typhantering för variabler eftersom detta sker internt i PHP. Språket har i och med version fem också möjligheter för objektorienterad programmering. [59]

36(106)

Page 37: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Det finns tre olika användningsområden för PHP. Dessa beskrivs nedan.

“Server side scripting”Genom en servermodul eller via CGI kan PHP användas tillsammans med en webbserver. Detta område är i dagsläget det största. Man kan via detta gränssnitt ta emot data ifrån en klient, bearbeta detta och returnera lämpligt data till klientens browser, oftast genererad HTML-kod. Med hjälp av inbyggda sessionsfunktioner kan man relativt snabbt skapa en webbsida som håller koll på information för en klient. Eftersom PHP dessutom har ett stort stöd för databaser, har en stor mängd funktioner (bl. a. datumhantering, regular expressions, komprimeringsfunktioner, hashfunktioner, stöd för kommunikation med LDAP, SNMP och POP3) kan man snabbt bygga ett avancerat webbsystem. Saknas stödet för ett nätverksprotokoll finns även möjligheter att skriva en egen implementation via socket-programmeringsfunktioner som finns inbyggda i PHP. [60]

“Command line scripting”PHP har också möjligheter att agera som ett vanligt skriptspråk i operativsystemet via gränsnittstypen SAPI (Server Application Programming Interface). Den implementation av SAPI som PHP stöder brukar benämnas som CLI (Common Line Interface) och är ett gränsnitt som fokuserar sig på skalprogrammering. Man kan beskriva detta som ett alternativ till bash, tcsh, perl eller motsvarande skriptspråk. Man kan med hjälp utav denna funktionalitet t. ex. skapa backupscript, installationsscript och utföra liknande administrativa uppgifter. [61]

Programmering av GUI-applikationerDet går att skapa vanliga desktopapplikationer med hjälp av PHP tillsammans med ett library som kallas PHP-GTK. GTK+ (GIMP Tool Kit) är ett objektorienterat widgetlibrary som tillhandahåller funktioner för att rita i ett fönster samt eventhantering. Med detta avses uppritandet av menyer, text, inmatningsrutor och knappar som användaren navigerar med via musen och tangentbordet. [62]

Om man har goda PHP-kunskaper och vill skapa ett GUI-program som använder egen- eller fördefinierade PHP-funktioner kan detta användningsområde vara av intresse. Dessutom finns det stora fördelar med en sådan implementation då PHP är plattformsoberoende och man kan då köra applikationen på alla plattformar. [60]

JavascriptJavascript är ett interpreterande språk som skapades av Netscape 1995 med syftet att erbjuda dynamisk funktionalitet till en webbläsare. I dagsläget har i princip alla browsers en inbyggd JavaScriptmotor som exekverar utpekad kod som angetts i HTML-filen man hämtat. I och med att funktionaliteten finns inbyggd i alla browsers kan man på ett plattformsoberoende sätt skapa dynamisk funktionalitet i browsern som ett serverbaserat scriptspråk inte kan skapa.

37(106)

Page 38: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Med JavaScript kan förändra innehållet i en redan skapad HTML-fil. Man kan ändra sidans utseende beroende på hur användaren navigerar. Sådana funktioner kan exempelvis vara att skapa menysystem, ändra formulär beroende på hur användaren svarar på en formulärfråga, skapa nya browserfönster, skapa “mouseover”-effekter eller dölja objekt. [63]

JavaScript har också objektorienterade möjligheter. Språkets syntax är något mellanting av C++, Java och Perl, vilket gör att de flesta programmerare relativt snabbt kommer in i språket. I likhet med PHP har JavaScript ingen manuell typhantering.För att minimera risken med virus och annan elak kod har JavaScript redan från början begränsats. Man kan via språket inte läsa eller skriva lokala filer eller använda något socketlibrary. Risken är annars stor att browsern kan exekvera kod ifrån någon server där data ifrån den lokala maskinen skickas iväg eller ändras av någon obehörig. Ett undantag från detta är dock att man via JavaScript kan hantera cookies.

Javascript använder sig av DOM (Document Objekt Model) för att hantera objekt i browsern. Det är ett API som används för att representera objekt och för att kunna komma åt och hantera de element som finns i objektet. Dessa objekt och element representeras i en trädstruktur som börjar med roten och som sedan utmynnar i noder. Kombinationen av JavaScript och DOM brukar benämnas som DHTML (Dynamic HTML), vilket möjliggör bl. a. formulärmanipulation. [64]

2.5 Användarcentrerade systemEn användarcentrerad systemdesign är en design där tonvikt läggs åt att anpassa gränsnittet till den grupp av användare som ska använda systemet.

Man brukar använda begreppet användbarhet som beskriver hur lätt ett system är att använda. Ett användbart system har med funktioner som löser användarnas verkliga problem, vilket inte alltid överrensstämmer med vad utvecklaren av programmet vill ha med i programvaran. Denna skillnad beror ofta på utvecklarens teknikfokus där man vill testa nya saker, eller då utvecklaren implementerar funktioner som skulle tänkas kunna användas vid avancerade tillämpningar. Huvudproblemet är dock att för lite tid ägnas åt användbarhet i systemets gränssnitt, vilket kan orsaka problem för användaren.

Detta område brukar i Sverige benämnas som MDI (Människa-DatorInteraktion) och är tvärvetenskapligt område som berör allt från psykologi, ergonomi och arbetsvetenskap till lingvistik och industridesign. MDI är ett ämne som studerar människans samspel med datorer och hur man med hjälp utav metodik kan förbättra sammarbetet. [65]

38(106)

Page 39: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Enligt ISO-standarden 9241-11 från 1998 under namnet “Guidance on Usability” har man definierat usability (användbarhet) som följande:

“The extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use.” [66]

För att uppnå dessa målen måste man på något sätt kunna mäta dessa aspekter. Detta brukar genomföras genom en brukarstudie där man låter en utplockad skara människor (som representerar den verkliga användaren) genomföra en rad tester och svara på frågor.

Nedanstående punkter exemplifierar en metodbeskrivning av dessa aspekter:

Effektivitet

• Tid att utföra en uppgift.

• Tid att lära sig en uppgift.

• Antal allvarliga fel samt tiden för att rätta dessa fel.

Ändamålsenligt

• Graden av ihågkommande efter en period.

• Procentuell beskrivning av hur stor andel av uppgifterna som slutförts framgångsrikt vid det första försöket.

• Procentuell beskrivning av andelen relevanta funktioner som använts.

Tillfredsställelse

• Upplevd tillfredsställelse av tillfredställelsen och felhanteringen genom t. ex. formulärfrågor.

Det finns en rad frågor man kan ställa under utvecklingsarbetet som hjälper till att definiera dels användarnas egenskaper och behov samt systemets implementation och uppföljning. Punktlistan nedan tar upp de viktigaste frågorna.

• Vilka är användarna?Vilken kunskapsnivå finns och hur mycket kan man tänkas utbilda dem under en begränsad tidsperiod?

• Vad är det användarna behöver kunna göra?Vilka bakomliggande problem löser dessa funktioner?

• Vilken del av funktionaliteten skall datorn utföra respektive vad ska användaren utföra?

39(106)

Page 40: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

• Är det implementerade systemet förutsägbart? Kan en användare föreställa sig vad som händer när en specifik funktion anropas?

• Känner användaren igen sig? Kan personen använda tidigare kunskap och erfarenheter från organisationen eller omvärlden samt andra datormiljöer i navigering och utförande i det nya systemet?

• Är systemet konsekvent? Är gränsnittet utformat enligt samma principer i alla programmets delar?

• Går det att utföra mer än en uppgift i taget? Kan användaren effektivisera sitt arbete genom att köra flera trådar?

• Har användaren någon möjlighet att anpassa gränsnittet? Finns det möjligheter att använda ett gränsnittet som är fördelaktigt för personer med handikapp?

• Ger systemet feedback till användaren om vad som utförs i systemet?Detta är viktigt för att se till att användaren inte ska tro att systemet har låst sig när den befinner sig i en beräknings- eller väntefas.

• Hur bra är felrapporteringen? Kan en användare baserat på ett felmeddelande lösa problemet?

• Hur stora svarstider är det i systemet? Uppfattar användaren svarstiden som irriterande?, hur kan man minska på svarstiden?

• Till hur stor grad uppfattar användaren att systemet löser de definierade problemen? [65]

2.6 Datasäkerhet

2.6.1 Definitioner

Med ordet “säkerhet” avses ofta associationerna “trygghet” eller “ofarlighet”. Det är ett ord med väldigt bred definition, som kan användas i alla möjliga sammanhang. Den tekniska betydelsen av ordet avser en mer specifik betydelse. Den beskrivs som något som inte bara är säkert, utan också något som har skyddats. I datakommunikationssammanhang förtydligas detta enligt nedanstående definition, som är återgivet i sin engelska form för att förmedla oförändrade associationer.

• A condition that results from the establishment and maintenance of protective measures that ensure a state of inviolability from hostile acts or influences.

40(106)

Page 41: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

• With respect to classified matter, the condition that prevents unauthorized persons from having access to official information that is safeguarded in the interests of national security.

• Measures taken by a military unit, an activity or installation to protect itself against all acts designed to, or which may, impair its effectiveness. [67]

Det finns två huvudtyper av datasäkerhet; fysisk säkerhet samt informationssäkerhet.

Den fysiska säkerheten beskriver de åtgärder som utförs för att skydda det berörda objektet från fysisk tillgång. Det kan i praktiken handla allt ifrån låsta dörrar till armerade vakter och larmsystem. Det finns tre huvudkategorier som definierar den fysiska säkerhetsaspekten. Dessa är beskrivna nedan.

• Användning av hinder för att frustrera samt fördröja angripare.

• Implementation av utrusting för att upptäcka en angripare. Denna kategori brukar handla om larm, ljusövervakning, vakter och övervakningskameror.

• Säkerhetsrespons. Metoder för att hantera en upptäckt angripare.

God fysisk säkerhet uppnås om man kombinerar dessa kategorier. Syftet med denna säkerhetsaspekt är att fördröja angriparen så mycket att denne blir upptäckt, samt se till så att kostnaden för attacken överstiger dess potentiella värde. [68]

Den andra säkerhetsaspekten, informationssäkerhet beskriver hur information regleras. I likhet med den fysiska säkerheten försöker man uppnå en säkehetsnivå som anpassar sig till värdet av det man försöker skydda. De huvudkategorier som behandlar detta område beskrivs nedan.

• “Confidentiality”. Information är endast tillåten för de som har behörighet att se den. Avlyssning av datatrafik (t. ex. IP-paket) är ett exempel som bryter mot denna princip. En metod för att försvåra denna avlyssning är genom att kryptera informationen mellan sändare och mottagare.

• “Integrity”. Dataintegritet anger att man kan lita på informationen. Den är har inte modifierats mellan sändare och mottagare. Dataintegritet kan t. ex. bli förstörd av medveten eller omedveten korruption innan informationen når mottagaren.

Ett annat begrepp är källintegritet. Med detta menas att den som förmedlar information är den som som den

41(106)

Page 42: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

säger sig vara och att man kan lita på det påståendet. Ett exempel när källintegritet inte längre gäller är vid så kallad “spoofning” när man förfalskar sin identitet.

• “Availability”. Anger att information är tillgänglig när man efterfrågar den. Ofta kräver man att information ska kunna förmedlas i en tillräckligt hög hastighet så att användaren av informationen kan utföra sin uppgift. Ett exempel som bryter mot tillgänglighetsprincipen är så kallade “Denial of Service”-attacker där information förmedlas i alltför låg hastighet eller inte alls.

• “Accountability”. Med detta avses ansvarsskyldighet för information. Mottagaren får inte vägra eller förneka mottagandet av överrenskommen kommunikation. Sändaren får likt mottagaren inte heller vägra eller förneka sändningen om en överrenskommelse mellan parterna finns.

Denna princip existerar för att skydda sändaren ifrån t. ex. omsändning av en vara när mottagaren vägrar eller förnekar mottagandet. Om en kund beställer en vara via Internet har kunden en ansvarsskyldighet enligt det informationsutbyte (ordern) som skett.

Omvänt skyddas mottagaren då sändaren har en ansvars- skyldighet för den förmedlande informationen samt eventuell överrenskommelse.

Principerna “Confidentiality”, “Integrity” och “Availability” brukar benämnas CIA och är en mycket vanlig term inom datasäkerhets-området. Ofta används det för att sammanfatta vad informationssäkerhet innebär. [69, 70, 71]

När man talar om implementationen av ett säkert system brukar man tala om säkerhetstjänster, säkerhetstekniker samt säkerhetssystem. Dessa beskrivs nedan.

SäkerhetstjänstEn säkerhetstjänst är en teoretisk beskrivning av ett säkert system. Det beskriver en praktiskt implementation av ett säkerhetssystem. Begreppet existerar för att säkerställa att systemet man pratar om existerar i praktiken och inte enbart som ett hypotetiskt säkerhetssystem. Det belyser själva syftet med säkerhetssystemet. Exempel på säkerhets-tjänster är autentifikationstjänst (kontrollera att en användare är den som användaren säger sig vara), auktoriseringstjänst (behörighetskontroll) och dataintegritetstjänst.

SäkerhetsteknikEn säkerhetsteknik är en bred definition på en funktionalitet som används i ett säkerhetssystem. Det kan vara ett protokoll, en algoritm utför en säkerhetsfunktion, maskinvara eller en kombination av dessa. Ett exempel på säkerhetstekniker är hashfunktionen MD5 (Message Digest 5), krypteringsalgoritmen RSA (Rivest, Shamir och Adleman)

42(106)

Page 43: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

och DSA (Digital Signature Algorithm).

SäkerhetssystemEtt säkerhetssystem är benämningen på ett system vars funktionalitet baserar sig på kombinationen av en eller flera säkerhetstekniker. Det är ibland svårt att skilja på en säkerhetsteknik och ett säkerhetssystem, men ett säkerhetssystem är alltid ett överordnat begrepp. Exempel på säkerhetssystem är PGP (Pretty Good Privacy), SSL (Secure Socket Layer) samt SET (Secure Electronic Transaction). [3]

2.6.2 Databassäkerhet

Detta avsnitt beskriver det vanligaste säkerhetsproblemet när det gäller databashantering för webbaserade informationssystem, vilket brukar kallas för “SQL injection”-attacker. Det är en metod som angripare använder där man t. ex. genom formulärinmatningar skriver in SQL-kommandon som sedan exekveras på servern. Man måste därför ta hänsyn till dessa aspekter när man skapar informationssystem för eliminera risken.

Det finns två vanliga varianter på denna princip. Om man använder sig utav en WHILE-sats i SQL-frågan kan man lägga till extra villkorssatser till denna och därmed kunna ange annat data. Den andra varianten är att man stänger WHILE-satsen och exekverar fler SQL-satser efter den första. Nedanstående exempel baserar sig på följande databastabell:

Figur 2-2: Tabellen Timanställd

En mycket vanlig funktion i dagens webbaserade informationssystem är en funktion som skickar ett glömt lösenord till användarens epostkonto. Användaren skriver in sitt användarnamn i en inputbox och trycker på en knapp och får sedan lösenordet skickat.

Följande exempel visar hur en angripare kan få användarens lösenord skickat till sin egna epostadress och därmed kunna komma in i systemet. Det baserar sig på ett informationssystem som inte filtrerar det inkommande datat utan använder datat direkt i SQL-satsen med citationstecken på båda sidor.

43(106)

Timanställd

*Username PasswordFörnamnEfternamnAdressPostnummerOrtTelefonnrEpostadress

Page 44: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Nedanstående SQL-sats exekveras på servern när användaren matar in “immanuel” som användarnamn och trycker på knappen. Den visar hur systemet fungerar i frånvaro från illasinnade individer.

SELECT Epostadress,Password FROM Timanstalld WHERE Username="immanuel";

Denna rad hämtar den e-postadress och lösenord som är förknippat med användarnamnet “immanuel” och skickar brevet baserat på dessa uppgifter.

Ett av de första stegen för en angripare är att leta reda på ett användarkonto som denne kan bryta sig in i. När man skriver in ett användarkonto som inte existerar kommer ett felmeddelande. När det omvända inträffar beskrivs vilken adress informationen har skickats till. Detta kan angriparen utnyttja för att ta reda på vad en användare har för e-postadress.

Angriparen skriver in följande i rutan och trycker på knappen:

abc" OR Username LIKE "%adm%

Denna rad översätts av servern till följande SQL-fråga:

SELECT Epostadress,Password FROM Timanstalld WHERE Username="abc" OR Username LIKE "%adm%”;

Denna rad hittade användaren “admin” i systemet och skickar detta till administratörens epostadress, [email protected]. Dessutom anges denna adress på sidan. Angriparen skriver sedan följande i textrutan och klickar på knappen:

abc" ; UPDATE Timanstalld SET Epostadress="[email protected]" WHERE Epostadress="[email protected]

Denna inmatning resulterar i följande SQL-sats:

SELECT Epostadress,Password FROM Timanstalld WHERE Username="abc" ; UPDATE Timanstalld SET Epostadress="[email protected]" WHERE Epostadress="[email protected]" ;

Systemet svarar med ett felmeddelande om att användaren “abc” inte existerar. Men en ytterligare SQL-sats har dessutom utförts som ändrade användarens epostadress. Angriparen skriver in “admin” som användare och trycker på knappen, vilket skickar kontouppgifterna till angriparens e-postkonto. Denne kan därefter logga in via systemets vanliga inloggningsfunktion och stjäla affärshemligheter eller ändra i systemet.

Denna metod skulle angriparen dock endast använda om syftet var att snabbt komma in, leta reda på affärshemligheter och sedan aldrig mera återvända. Detta eftersom lösenordet skickades till det riktiga adminkontot innan e-postadressen hann ändras, vilket administratören kommer att uppmärksamma och börjar utreda. Hade

44(106)

Page 45: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

angriparen varit intresserad av att ha tillgång till systemet en längre tid hade mer tidskrävande metoder använts som inte lika lätt hade uppmärksammats.

Angriparen fick reda på tabellens namn “Timanstalld” samt attributet “Epostadress” genom att utnyttja databasserverns felhantering. Den förstnämnda kan erhållas genom att använda så kallade “subselect” där man exekverar en SELECT-sats innuti en annan. Attributet kan fås genom att bygga vidare på WHILE-satsen. Båda baserar sig på AND-nyckelordet, databasserverns felhantering samt upprepade försök med sannolika namn. De är inte beskrivna här på grund utav utrymmesskäl.

Lösningen till problemen med “SQL injection” är att filtrera det data som användaren matar in. En effektiv metod är att omvandla tecknen ' och “ till \' samt \” som av användarens inmatning. Detta resulterar i att databasservern inte längre kommer att tolka dessa som en del av SQL-syntaxen utan som strängdata. [72, 73]

2.7 Standarder och rekommendationer

2.7.1 W3C

Tim Berners-Lee uppfann World Wide Web 1989. Han skapade även den första webservern “httpd”, den första webbläsaren samt redigeraren “WorldWideWeb” i oktober 1990. Han publicerade det primära formatet för webben genom att skapa den första versionen av HTML med stöd för hyper länkar. I Oktober 1994 grundade han World Wide Web Consortium (W3C) vid Massachusetts Institute of Technology, Labaratorium för datavetenskap [MIT/LCS] i sammarbete med CERN. [74]

Uppdraget som W3C försöker fullfölja är att skapa protokollen och instruktioner för att försäkra uppväxten av webben. Den internationella konsortium World Wide Web Consortium (W3C) är en organisation med medlemmar i samarbete med allmänheten som jobbar för att skapa webb- standarder. Organisationen W3C utvecklar även mjukvaror, deltar i utbildningar och erbjuder ett öppet forum för diskussioner kring webben. Kompatibiliteten står högt på prioriterings listan hos W3C och webbteknologier måste vara kompatibla med varandra oavsett vilken hård- eller mjukvara man använder för att ansluta till webben.

World Wide Web Consortium är stark knuten till internationella organisationer runt om i världen som deltar och bidrar till utvecklingen av W3C-standarder. Operationer som utförs av W3C administreras av MIT Computer Science och Artificial Intelligence Laboratory (CSAIL) från USA, den Europeiska Forsknings Konsortium för Information och Matematik (ERCIM) i Frankrike samt Keio Universitetet i Japan. W3C har kontor i fjorton regioner där ett av kontoren ligger i Sverige. [75]

45(106)

Page 46: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Figuren nedan illustrerar hur W3Cs teknologiska stack ser ut. Web är med andra ord en applikation byggd på toppen av “Internet”.

Figur 2-2: W3Cs teknologiska stack [76]

Det mesta arbetet som sker under organisationen illustreras på bilden som visar infrastrukturen av webben. De fem olika områden längst ner representerar underlag av URI:er, HTTP, XML och RDF.

Huvudfocuseringen är tillgänglighet, internationalisering, maskinoberoende samt kvalitet. Med hjälp av denna fokus kommer den framtida webben att bli en rubust, skalbar och adaptiv infrastruktur. [77]

2.7.2 JPEG

Formatet JPEG står för Joint Photographic Experts Group och är en komprimeringsmetod för bilder. Själva JPEG beskriver endast hur en bild transformeras och inte hur datat är inkapslat i något speciell lagrings- media. En annan standard i sammanhanget är JFIF (JPEG File Interchange Format) som skapats av Idependet JPEG Group och specificerar hur en fil skall produceras som är lämlig för datorlagring och överföring t.ex. via Internet.

KodningJPEG standarden erbjuder många möjligheter men det är bara några få som nyttjas. Processer som genomgås vid kodning av JPEG är omvandling av färgutrymme (Color Space Transformation), Downsampling, Discrete Cosine Transform, Quantization, Entropy coding, Compression ratio och artifacts samt Decoding. Standarden stöder både förstörande och icke förstörande kodning, där den förstörande är den vanligaste. En variant av JPEG som möjliggör gradvis sändning av koefficienter kallas progressiv JPEG. Den gör det möljgt att en klient kan se vad bilden föreställer innan alla

46(106)

Page 47: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

koefficienter har tagits emot.

AnvändningJPEG lämpar sig bäst för fotografier samt målningar hellre än ritningar och grafiska ikoner. Vanligtvis utför JPEG bättre komprimering än andra förstörbara komprimeringsmetoder, vilket resulterar i hyggliga bilder även vid stark komprimering.

FramtidJPEG 2000 heter den nya wavlet-baserade standarden som är skapad av JPEG kommitén. Den kommer eventuellt att ersätta den vanligaste JPEG standarden. Nackdelen med användning av wavelet är att många wavelet- algoritmer är patenterade, vilket gör det svårt eller omöjligt att distribuera mjukvarorna gratis. [78, 79, 80]

2.7.3 PNG och GIF

PNG (Portable Network Graphics) är ett format som utvecklades i början av 1995. Formatet har sedan det skapades blivit alltmer populärt, inte minst på webben och används som ett bättre och friare allternativ än GIF (Graphics Interchange Format). Till skillnad från GIF är PNG formatet patentfritt tack vare Unisys som släppte royality-free patent licens till utvecklarna av fri mjukvara i August 1999. Sedan dess har PNGs popularitet vuxit med otrolig fart och idag används det flitigt på webben. Fördelarna med PNG är att den stödjer högre färgdjup och annan information än konkurenten GIF som enbart stödjer 256 färger.

PNG är ett plattformsoberoende format och levereras som ett library med namnet libpng. Den metod som används för att producera den icke förstörande kodningen kallas eflation, och används eftersom den inte är patenterad.

Jämfört med GIF så kan PNG prestera större komprimeringsgrad. I vissa implementationer kan dock val av filtermetoder bli felaktigt, vilket kan resultera i onödigt stora filer.

När det gäller genomskinlighet ger PNG-formatet två olika typer av genomskinlighet: den binära genomskinligheten (där varje pixel är fullt transparent eller fullt ogenomskinlig) eller alfta kanal transparans där varje pixel har en 8-bit numeriskt värde som representerar delvis transparans.

47(106)

Page 48: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Figur 2-3: Alphakanal med PNG

Bilderna ovan visar en PNG bild med ett 8-bitars transparenslager (bild till vänster) och bilden till höger visar ett övertäckt lager på en shackrutig bakgrund.

Stöd för alfakanaltransparensen i webbläsarna tog lång tid att implementera. Idag har den binära transparensen dock fortfarande större stöd än alfakanaltransparansen. Den populäraste webbläsaren på marknaden Microsoft Internet explorer har enbart stöd för den binära transparensen. Det fria alternativet till IE, Mozilla Firefox har fullt stöd för båda varianterna.

PNG formatet tillåter upp till 48-bitar färger medan 32-bitar (RGBA) är fullt tillräckligt för de flesta användarna. Övrig information som kan lagras i en PNG fil är bakgrundsfärger, gammavärden och textuell information. [81]

2.7.4 W3Cs rekommendationer

PNGPNG hamnade på W3Cs rekommendationslista i oktober 1996 som reviderades i en ny version november 2003. Den sistnämnda versionen är även ISO standariserad med benämningen ISO/IEC 15948:2003 (E). MIME-typ för PNG är image/png och godkändes 14 Oktober 1996.

Antal verktyg för skapandet av PNG ökar för varje dag då formatet stöds på många platformar. Populariteten kring formatet har till stor del bidragit implementation på så gott som alla moderna webbläsare. På PNGs hemsida går det att få reda på vilka webbläsare stödjer formatet. PNG rekommenderas att användas istället för GIF-formatet p.g.a PNGs licensmodell samt större funktionalitet. [82]

XHTML 1.0XHTML 1.0 var det första W3C rekommenderade efter HTML 4.01, HTML 4.0, HTML 3.2 och HTML 2.0. Standarden XHTML 1.0 är reformulerad av HTML 4 till XML samtidigt som den ärver stabilitet från HTML 4 och makten av XML. Syftet med att XHTML utvecklades var p.g.a. utökning av webbläsarnas platformar där stöd för TV, bilar, mobiltelefoner var önskvärda mål.

XHTML 1.0 finns i tre olika typer nämligen XHTML 1.0 Strict, XHTML 1.0 Transitional, XHTML 1.0 Frameset.

48(106)

Page 49: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Den förstnämnda XHTML 1.0 Strict rekommenderas när man vill ha en ren kodstruktur fritt från taggar som bestämmer utseendet på sidan. W3C rekommenderar användnig av CSS när man skall förändra exempelvis teckensnitt, färg och layout effekter.

XHTML 1.0 Transitional är lättast att anpassas för den HTML-vane användaren. Det är små förändringar i en HTML kod som behöver förändras för att anpassas till XHTML 1.0 Transitional. Tillåtna taggar är body-element, bgcolor, text samt link-attributer.

XHTML 1.0 Frameset rekommenderas då användningen av ramar på en webbsida förekommer. [83]

CSSCSS har sedan första versionen varit rekommenderat av W3C. Den ger skaparen och läsaren mer kontroll över utseendet och layouten av HTML- samt XML-dokument.

Genom användning av CSS kan man kontrollera:

• Radavstånd och längd• Marginaler och indrag• Teckensnitt, teckensnitt storlek och teckensnitt

färger• Bakgrundsbilder, fäger och mycket mera.

Man kan infoga CSS innuti en HTML sida eller länka till en extern CSS som kan påverka ett antal olika webbsidor genom en enda CSS fil.

Fördelarna med användning av CSS är att HTML kod blir mycket enklare att läsa och redigera. Det ökar läsbarheten av koden då HTML koden inte behövs för att bestämma utseendet på sidan och därmed blir många HTML taggar uteblivna. För att få en webbsida att se bra ut på olika skärmar i olika resolutioner används relativa mått.

Flexibiliteten med CSS är att en enda fil påverkar en hel webbsida eller webbplats. Genom att redigera i en enda fil kan man bestämma utseende på alla sidor samtidigt. CSS stöds av många äldre webbläsare och det går att anpassa den för funktionshindrade människor.

CSS är implementerad i de flesta webbläsare; Mozilla Firefox, Internet Explorer, Safari, Opera, Konqueror m.fl. [84, 85]

ISO 8601ISO 8601 är en internationell standard av datum och tid. Den nuvarande standarden är numera i sin tredje version, ISO 8691:2004 som ersätter den första versionen ISO 8601:1988 samt den andra versionen 8601:2000.

Grundkonceptet för den här standarden är att ge möjlighet för användaren att precisera tid så exakt eller generellt som användaren önskar. Datumrepresentationen beskrivs i fallande storleksordning; från år till sekunder och millisekunder.

49(106)

Page 50: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Teoretisk bakgrund

Datum kan beskrivas på tre olika sätt enligt ISO 8601: Kalenderdatum, ordinärt datum samt veckodatum.

KalenderdatumKalenderdatum är det vanligaste formatet, vilket skrivs enligt formatet ÅÅÅÅ-MM-DD.

Ordinära datumOrdinära datum är datum där man räknar dagar som passerar genom hela året. Dagen presenteras med tre tal som startar med 1:a Januari (001). Detta leder till att 1:a Februari exempelvis blir 032. Undandtag är 31:a December som beskrivs som 365 under vanliga år och 366 under skottår. Det ordinära datumets format skrivs ÅÅÅÅ-DDD.

VeckodatumVeckodatum är datum där dagar fastställs i form av veckor. Veckorna skrivs med två tecken där första veckan på året börjar med 01. Formatet skrivs enligt formatet ÅÅÅÅ-VVV-D (2004-V16-22).

ISO 8601 använder 24-timmarsbeskrivning för ett dygn. Det grundläggande formatet är ttmmss, men man kan även använda det korta alternativet ttmm.

Om inga tidzoner har angetts när man anger tid antas det att man använder lokal tidzon. För att ange tidzon enligt UTC (Coordinated Universal Time) läggs ett stort Z på slutet av tidsformatet. Ett exempel på hur en UTC tidzon kan se ut visas nedan.

14:05:54Z eller 1405Z. [86, 87]

50(106)

Page 51: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Genomförande

3 Genomförande

3.1 Val av plattform och teknologier

3.1.1 Systemutvecklingsmetod samt databasserver

SystemutvecklingsmodellUML har valts som modell då den både rekommenderas inom den akademiska världen samt används inom företagsvärlden. Det är en modell som både är mångsidig och kraftfull och som underlättar för att skapa en god systemdesign.

Genom att använda sig av visualiseringsverktyg (t. ex. klassdiagram, flödesdiagram, use casediagram m.m.) skapas en förbättrad förståelse av ett komplext system. Man kan dessutom använda UML i alla steg i utvecklingsprocessen. Modellen är därför en universell lösning som garanterar en konsekvent struktur av systemets design. Sådana egenskaper resulterade i detta vägval.

NormaliseringsgradAnvändningen av de tre första normaliseringsgraderna har valts. Detta eftersom det är de tre första som är de vanligaste och som påverkar databasmodelleringen i största grad. Data beskrivs därmed effektivt och logiskt korrekt.

DatabasserverBaserat på de generella målaspekter som definierades i avsnitt 1.5 har databasservern MySQL valts. En mycket viktig egenskap som sätter denna serverprogramvara i fokus är dess licensmodell. Denna modell gör programvaran mycket kostnadsmässigt effektiv, samt öppnar möjligheter för framtida utbyggnad. Med hjälp av den medföljande källkoden kan man kontrollera serverns säkerhet, korrekthet och robusthet. Dessutom finns möjligheten att förbättra eller lägga till egenskaper man är intresserad av.

I och med licensmodellen är det också en plattformsoberoende lösning som fungerar i de flesta datorsystem. Den har också ett gott rykte om tillförlitlighet och prestanda. De andra beskrivna databasservrarna IBM DB2, Microsoft SQL Server samt Oracle uppfyllde de definierade målen sämre jämfört med MySQL. Det var främst de avsevärt högre kostnaderna samt licensmodellerna hos de andra varianterna som avgjorde beslutet att köra MySQL.

Valet att välja en RDBMS framför en objektorienterad variant berodde främst på dess frekventa användning på webbhotellen (vilket ökar systemets kompatibilitet), samt på grund av att relationsdatabas-servrarna är bättre dokumenterade.

51(106)

Page 52: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Genomförande

3.1.2 Webbserver

HTTP serverValet av webbserver baserades likt databasservern på de definierade målen. Även i detta fall spelade licensmodellen stor roll då det open sourcebaserade alternativet både är kostnadsmässigt effektivt, plattformsoberoende samt möjliggör granskning och förändringar av programvaran.

Serverprogramvaran som valdes var Apache. Den har ett väl utvecklat stöd för tillägg i form av exempelvis skriptspråk (JSP eller PHP) samt möjligheten för secure socketlayer-funktionalitet. Eftersom programvaran dessutom är mycket vanlig på webbhotell samt har frekventa säkerhetsuppdateringar valdes programvaran framför IIS och Zeus.

3.1.3 Språk

ServersidanEftersom dynamisk webbfunktionalitet krävdes för att kunna lösa det definierade problemet valdes ett skriptspråk som tillägg till webbservern. Det språk som valdes var PHP eftersom licensmodellen är fördelaktig samt dess frekventa användning på webbhotellen. Valet stod mellan JSP och PHP som har likartade egenskaper och kompatibilitet med Apache. Båda tillhandahåller mångsidiga hjälpfunktioner som breddar deras användningsområde. PHP valdes dock på grund av sin goda dokumentation, dess stöd på webbhotellen samt en något bättre licensmodell.

Ett annat serverbaserat språk som valdes var SQL för hantering av databasservern. Det valdes eftersom MySQL baserar sig på språket.

KlientsidanSom språk på klientsidan valdes JavaScript eftersom det är det enda språk som stöds av alla browsers. Språket har dessutom egenskaper som stämmer överrens med de definierade målen, vilket bibehåller systemdesignens potential.

SidbeskrivningsspråkEftersom de generella målen korrekthet och effektivitet definierades i avsnitt 1.5 valdes sidbeskrivningsspråket XHTML Strict 1.0 istället för HTML. XHTML är dessutom en rekommenderad standard av organisationen W3C. Versionen “Strict” valdes eftersom de generella målen definierar systemdesignens långsiktigt.

I dagsläget är “Transitional”-versionen den vanligaste vars syfte är att stegvis gå mot den slutliga XHTML-versionen, dvs. det tänkta språket i framtiden. Med detta som motivation ökar man sannolikheten för att sidan även i framtiden ska fungera med alla webbläsare.I kombination med XHTML Strict 1.0 har CSS valts. XHTML-delen beskriver sidans struktur medan CSS beskriver det grafiska utseendet. Detta vägval är baserat på organisationen W3Cs rekommendation om att man helt och hållet bör använda CSS för det grafiska utseendet. Man kan på så sätt beskriva flera webbsidors utseende via en gemensam CSS-beskrivningsfil.

52(106)

Page 53: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Genomförande

3.1.4 Komprimeringsformat och datarepresentation

PNGPNG har valts framför GIF främst på grund utav dess licensmodell och bättre tekniska egenskaper. Formatet har bättre stöd för 24 bitars färgrepresentation, alphakanalstöd med variabel transparensnivå samt högre komprimeringsgrad. Dess tänkta syfte är att hantera enklare bilder med få färgvariationer (ej fotografier). Eftersom formatet har fått stort webbläsarstöd finns det inte längre några fördelar med GIF och därför valdes formatet.

JPEGJPEG har valts som format för fotografier då det är ett standardiserat format som alla browsers stöder. Formatet har dessutom en mycket hög komprimeringsgrad vilket skapar en effektiv kommunikation mellan klient och server när det gäller överförandet av komplex bildinformation. Icke progressiv JPEG har valts som format eftersom den progressiva algoritmen inte stöds av alla browsers.

ISO 8601ISO 8601 valdes som det generella datumformat som skulle användas i all datumbeskrivning. Valet baserade sig på W3Cs rekommendation där ett entydigt format förespråkades. Man undviker därmed tolkningsproblemen som kan uppstå vid användningen av andra format. Formatet har också en programmeringsmässigt tilltalande struktur där alla månader respektive dagar beskrivs med två siffror. Detta ansågs vara fördelaktigt vid utformandet av systemets algoritmer.

3.2 Systemdesignen

3.2.1 Databasmodellering

Databasmodelleringen var ett resultat av både teoretiska och praktiska aspekter. En del attribut lades till eller beskrevs annorlunda för att undvika onödigt komplexa SQL-frågor (dubbla INNER JOINS i samma fråga). Två exempel på detta var en indexerande variabel i tabellen “Timanstalld” samt att beskriva ett företagsnamn i tabellen “Uppdrag” utan att referera till tabellen “Kund”.

Variabeltyper och dess storlek definierades enligt prestandamässiga aspekter samt principen om flexibilitet. Den flexibla egenskapen, dvs. att inte begränsa attributen alltför mycket fick högre prioritet än prestandafaktorerna som ansågs vara relativt försumbara i jämförelse.

Tabellernas namn samt attribut namngavs på svenska fast utan å,ä och ö. Istället användes a och o för att garantera kompatibiliteten mellan olika versioner av MySQL. Detta eftersom det fortfarande förekommer miljöer där inte ISO-8859-1 eller Unicode stöds. Ibland används engelska uttryck som attributnamn för att inte förmedla mindre använda associationer och därmed undviker man förvirring. För att öka läsbarheten påbörjas varje namn eller bokstaven efter skiljetecken med versalt tecken. I enlighet med UML beskrivs alla tabellnamn och attribut i singularis.

53(106)

Page 54: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Genomförande

Databasdesignen baserade sig också på en del inbydda funktioner i servern. Den viktigaste av dessa var krav på inmatning för vissa attribut (utöver den primära nyckeln) samt defaultvärden med datatypen enum.

Nedan beskrivs de tabeller som definierades samt konfigureringen av de nämnda funktionerna. Syftet med vissa attribut förtydligas dessutom.

Tabell 3-1: ForetagsuppgiftAttribut Variabeltyp Inmatningskrav Nyckel Defaultvärde Förtydligande

beskrivning

ForetagsuppgiftID tinyint(3) unsigned JA JA 0 Primär nyckel

Foretagsnamn Varchar(20) JA NEJ NULL

Adress varchar(20) JA NEJ NULL

Postnummer Varchar(10) JA NEJ NULL

Ort varchar(20) JA NEJ NULL

Telefonnr Varchar(15) NEJ NEJ NULL

Mobiltelefonnr Varchar(15) NEJ NEJ NULL

Epostadress Varchar(50) NEJ NEJ NULL

Organisationsnr Varchar(20) NEJ NEJ NULL

Momsregnr Varchar(20) NEJ NEJ NULL

Bankgiro Varchar(15) NEJ NEJ NULL

Plusgiro varchar(15) NEJ NEJ NULL Nya namnet på Postgiro

Arbetsgivaravgift tinyint(3) unsigned JA NEJ 0

Inkomstskatt tinyint(3) unsigned JA NEJ 0

Tabell 3-2: KundAttribut Variabeltyp Inmatningskrav Nyckel Defaultvärde Förtydligande

beskrivning

KundID Smallint(5) unsigned

JA JA 0 Primär nyckel

Foretagsnamn varchar(20) JA NEJ NULL

Adress varchar(20) JA NEJ NULL

Postnummer varchar(10) JA NEJ NULL

Ort varchar(20) JA NEJ NULL

Kontaktperson varchar(20) NEJ NEJ NULL

Telefonnr varchar(15) NEJ NEJ NULL

Faxnr varchar(15) NEJ NEJ NULL

Mobiltelefonnr varchar(15) NEJ NEJ NULL

Avdelning varchar(20) NEJ NEJ NULL

Epostadress varchar(50) NEJ NEJ NULL

54(106)

Page 55: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Genomförande

Tabell 3-3: TimanstalldAttribut Variabeltyp Inmatningskrav Nyckel Defaultvärde Förtydligande

beskrivning

Username Varchar(50) JA JA Primär nyckel

Password varchar(20) JA NEJ NULL

Skapades Date NEJ NEJ NULL

TimanstalldID smallint(5) unsigned

NEJ NEJ NULL Hjälpvariabel för indexering

Personnummer varchar(13) JA NEJ NULL

Fornamn varchar(20) JA NEJ NULL

Efternamn varchar(20) JA NEJ NULL

Adress varchar(30) NEJ NEJ NULL

Postnummer varchar(10) NEJ NEJ NULL

Ort varchar(20) NEJ NEJ NULL

Telefonnr Varchar(15) NEJ NEJ NULL

Mobiltelefonnr Varchar(15) NEJ NEJ NULL

Epostadress varchar(50) JA NEJ NULL Krävs av epostfunktioner

Tabell 3-4: UppdragAttribut Variabeltyp Inmatningskrav Nyckel Defaultvärde Förtydligande

beskrivning

UppdragID smallint(5) unsigned

JA JA 0 Primär nyckel

Datum date JA NEJ 0000-00-00 ISO 8601

Starttid tinyint(3) unsigned JA NEJ 0

Sluttid tinyint(3) unsigned JA NEJ 0

Foretagsnamn varchar(20) JA NEJ

Beskrivning text NEJ NEJ NULL

Kommentar text NEJ NEJ NULL

T_Dag_Starttid varchar(4) JA NEJ

T_Dag_Sluttid varchar(4) JA NEJ

T_Kvall_Starttid varchar(4) JA NEJ

T_Kvall_Sluttid varchar(4) JA NEJ

T_Natt_Starttid varchar(4) JA NEJ

T_Natt_Sluttid varchar(4) JA NEJ

T_Dag_Lon smallint(5) unsigned

JA NEJ 0

T_Kvall_Lon smallint(5) unsigned

JA NEJ 0

T_Natt_Lon smallint(5) unsigned

JA NEJ 0

55(106)

Page 56: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Genomförande

Tabell 3-5: Uppdrag_MedlemAttribut Variabeltyp Inmatningskrav Nyckel Defaultvärde Förtydligande

beskrivning

UppdragID smallint(5) unsigned

JA JA 0 Del av primär nyckel

TimanstalldID smallint(5) unsigned

JA JA 0 Del av primär nyckel

Rapporterat enum('j','n') JA NEJ n Avgör rapporteringsstatus

Kommentar text NEJ NEJ NULL

Paminnelse enum('j','n') JA NEJ n Avgör påminnelsestatus

Starttid varchar(4) NEJ NEJ NULL

Sluttid varchar(4) NEJ NEJ NULL

Rast1_Starttid varchar(4) NEJ NEJ NULL

Rast1_Sluttid varchar(4) NEJ NEJ NULL

Rast2_Starttid varchar(4) NEJ NEJ NULL

Rast2_Sluttid varchar(4) NEJ NEJ NULL

Rast3_Starttid varchar(4) NEJ NEJ NULL

Rast3_Sluttid varchar(4) NEJ NEJ NULL

Tabell 3-6: LogAttribut Variabeltyp Inmatningskrav Nyckel Defaultvärde Förtydligande

beskrivning

LogID int(10) unsigned JA JA 0 Primär nyckel

Username varchar(20) JA NEJ NULL

Datum date JA NEJ NULL ISO 8601

Timestamp int(10) unsigned JA NEJ NULL UNIX timestamp

IP varchar(15) JA NEJ NULL

DNS varchar(100) NEJ NEJ NULL

UserAgent varchar(200) NEJ NEJ NULL Browserinformation

Typ smallint(5) unsigned

NEJ NEJ NULL Anger typen av logdata

Beskrivning Varchar(100) NEJ NEJ NULL

Klassdiagram för databasmodelleringen finns beskrivna i bilaga 2.

56(106)

Page 57: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Genomförande

3.2.3 Användargränssnitt

Målgrupp och utrustningDen målgrupp som systemdesignen baserar sig på är personer som känner till företagets verksamhet. Eftersom företaget baserar sin verksamhet på studenter kan man utgå ifrån en viss nivå av datorkunskaper. Med detta avses åtminstone kunskaper om grundläggande hantering av operativsystem, webbläsare och elektronisk post.

Eftersom användarnas datorutrusting med all sannolikhet kan variera har en systemdesign valts som garanterar hög kompatibilitet. Den lägsta upplösning som systemet fungerar med är därför 800x600 pixlar.

Utformningen av gränssnittetFärger och text har valts som uppnår goda kontraster mellan förgrund och bakgrund, något som maximerar läsbarheten. Färger som människan uppfattar reflexmässigt har valts för felmeddelanden.

Målet med det grafiska gränssnittet är att det skulle vara självförklarande. Inga hjälpfunktioner ska därmed behövas. Om det skulle behövas skulle i så fall gränssnittet vara felaktigt utformat. Hänsyn togs för att garantera visuell feedback och att göra systemets utformning konsekvent. Uformningen baserade sig också på principen om igenkännbarhet och förutsägbarhet, dvs. en struktur och funktionalitet som liknade andra datorsystem.

Möjligheten att effektivisera med hjälp av parallella uppgifter undersöktes. Det visade sig att den enskilda användaren av logiska skäl alltid arbetade sekventiellt eftersom en senare uppgift var beroende av en föregående. Principen om parallell funktionalitet existerar dock om man ser systemet ifrån ett helhetsperspektiv. Ett flertal användare och administratörer kan arbeta samtidigt och därmed maximera effektiviteten.

Vissa moment i användarens arbete effektiviserades genom att gruppera och möjliggöra ett flertal operationer på en gång. Ett exempel på detta är att användaren kan rapportera alla aktuella uppdrag på en gång (på samma sida). Denna funktionalitet minskar antalet knapptryckningar samt ökar överskådligheten av den aktuella uppdragsperioden.

Tid ägnade också åt att fundera över användarens möjligheter att kunna påverka gränssnittet samt dess uppfattning av gränssnittet. Ett område som togs upp var om felmeddelanden skulle visas med röd färg. Den röda färgen är den färg som människan ur ett biologiskt perspektiv uppfattar snabbast, vilket har medfört till ett sådant beslut. Men eftersom det finns ca. 350 000 färgblinda i Sverige kunde en sådan färg kunna orsaka problematik. Det beslutades därför att en stark röd färg skulle användas med mycket hög kontrast mellan förgrund och bakgrund. Kombinationen grön bakgrund och röd förgrund undveks helt och hållet eftersom det är ett vanligt problem. Om tid fanns beslutades det även att användaren skulle kunna välja en annan färg för systemets felmeddelanden.

57(106)

Page 58: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Genomförande

3.3 Utveckling av systemet

3.3.1 Skapandet av grafik

Systemets grafik skapades främst i programmet Adobe Photoshop. Detta eftersom programmet har mycket välutvecklade designverktyg samt god lagerhantering. Menygrafiken skapades helt i programmet. Det format som valdes för knapparna var PNG eftersom bildinformationen har få färgvariationer och då formatet resulterar i små filer utan komprimeringsartefakter.

I vissa fall användes programmet GIMP (GNU Image Manipulation Program) för att skapa enklare grafik. Valet var främst pga. effektivitets-skäl då utvecklingsplattformen i största grad var Linux. Systemets kalendergrafik skapades i programmet med PNG-som format.

3.3.2 Programmeringsfasen

ProgrammeringsprinciperDe valda sidbeskrivningsspråken XHTML och CSS användes under hela programmeringsfasen av systemet i kombination med PHP och JavaScript. Med PHP genererades XHTML-kod som sedan även kunde behandlas med JavaScript och skapa DHTML-funktionalitet.

Ett medvetet val om att minimera användningen av JavaScript togs där språket endast skulle användas där det var tvunget. Detta vägval baserade sig på principen om att sköta all felkontroll på serversidan istället för på klientsidan. Hade man kontrollerat och begränsat variabler på klientsidan hade en potentiell angripare kunnat skriva ett browserprogram som inte följer all felkontroll och därmed kunnat utsätta servern för oönskade situationer. Sådana situationer skulle kunna ha medfört till sämre säkerhet eller tillförlitlighet. JavaScript användes för att förändra innehållet i informationslistor på sidan baserat på användarens agerande.

Kodsekvenser som utförde uträkningar med återanvändningsbara egenskaper placerades i en klassfil (classes.php) som anropades av olika php-filer när dess behov krävdes. Se bilaga 4 för mer information.

Koden för systemets olika delar uppdelades baserat på typ av användare. Inkluderingsfiler, klasser samt bilder fick sina egna kataloger. Eftersom den tänkta servern var ett webbhotell med begränsade rättigheter beslutades det att databasanslutningsfunktioner med tillhörande lösenord skulle placeras i varje php-fil istället för en inkluderingsfiler. Det antogs att möjligheten att placera de hemliga uppgifterna utanför www-roten inte var en självklarhet. Eftersom webbservern alltid översätter PHP-filerna var informationen skyddad.

En mer flexibel lösning hade varit att placera databasanslutningsfunktionen i en enda inkluderingsfil som varje php-fil inkluderade. Problemet med denna lösning var att dess

58(106)

Page 59: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Genomförande

konstruktion inte innehöll en funktion som terminerade databasanslutningen. En angripare hade därför kunnat anropa php-filen och skapat så många handtag på servern att ett maxvärde uppnåtts och därmed satt servern ur spel.

VerktygDen editor som främst användes för skapandet av systemet var GNU Nano som användes på de plattformar systemet utvecklades på. Tillsammans med denna editor användes främst programmen Firefox och Thunderbird för att testa webb och e-postfunktionaliteten. Dessutom testades sidan i Internet Explorer, Opera och Konqueror (som Safari bygger på) för att kontrollera att sidorna såg ut likadant överallt.

Varje generarad SQL-sats testades i MySQLs consolebaserade administreringsverktyg. Detta var en ytterligare kontroll om man tänkt rätt både ur kodmässigt och logiskt perspektiv.

W3Cs valideringsfunktioner anropades ofta för att kontrollera att sidbeskrivningsspråken var korrekt kodade. Det förekom tillfällen då dynamiskt genererad kod fungerade väl i vissa situationer men inte i andra. Det var därför viktigt att testa sidorna för de situationer som hypotetiskt skulle kunna inträffa.

DatasäkerhetEn annan aspekt var datasäkerheten. Den dynamiska delen av SQL-kommandona beskrevs i PHP med två stycken \” tecken, vilket tog bort risken för SQL-injection. Tid lades dessutom till att kontrollera att detta verkligen fungerade i praktiken, vilket det gjorde. PHPs inställning “magic quotes” (som normalt är aktiverat) översätter alla quote-tecken till escapesekvenser, vilket minimerar risken ytterligare. Dessutom anropades av principsak mysql-funktionen som endast utförde ett enda SQL-kommando. Detta för att minimera den potentiella skadan för hypotetiska misstag i koden.

För alla sidor i systemet placerades det en användarkontroll baserat på användarens session. Var inte användaren behörig (vanlig användare eller inte ens inloggad) visades systemets inloggningssida istället.

MailfunktionerEftersom kompatibilitet och plattformsoberoende var en viktig aspekt under systemdesignen fattades beslutet att skriva en egen SMTP-klient. Detta för att inte skapa ett onödigt beroende av serverns egenskaper. Det enda som systemet skulle kräva av servern var PHP-stödet.

I UNIX-miljö brukar ofta programvaran sendmail användas, medan i Windows används IIS. För att garantera att systemet alltid skulle fungera på alla plattformar oavsett serverns konfiguration skapades en sådan funktionalitet med hjälp utav PHPs socketfunktioner. Koden för denna funktion finns beskriven i bilagan som beskriver alla klasser (Bilaga 4).

59(106)

Page 60: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Genomförande

Denna funktion baserade sig på base64-kodat data och MIME-extensions för att garantera dels kompatibelitet mellan mailservrarna samt för mailklienterna. Som ett extra tillägg utöver vanlig textformat valdes HTML för att ge ett mer sofistikerat användargränssnitt för de användare som hade stöd för formatet i epostläsaren.

Epostfunktionen användes dels för att skicka glömda lösenord till användare och dels för att påminna användare om att uppdragsrapportering inte skett. Om inte användaren rapporterar ett uppdrag inom en vecka efter det datum som uppdraget utfördes, kommer ett sådant brev att skickas.

Ett beslut fattades om att endast ett sådant brev skulle skickas. Det antogs endast vara undantagssituationer när en användare inte rapporterar trots påminnelse och att det inte skulle hjälpa att skicka ett ytterligare brev. Informationen om ett brev skickats eller ej hanterades via attributet “Paminnelse” i tabellen “Uppdrag_Medlem”.

3.4 Testfas

3.4.1 Metod

Testfasen handlade att kontrollera om systemet fungerade i alla tänkbara situationer. Genom att metodiskt gå igenom alla hypotetiska situationer säkerställde man att systemet fungerade som det skulle. Denna fas ansågs vara mycket viktig för att garantera systemets definierade mål. För ett tidsbegränsat projekt är sannolikheten stor att någon del avviker från de uppsatta målen. Med insikt om detta fattades beslutet om att ägna tid åt att definiera och tillämpa en testmetod.

Ett verktyg för denna fas var att skapa scenarion baserat på hypotetiska situationer där användare utförde en aktivitet i systemet. Syftet med detta verktyg är att återspegla själva användningen av systemet.

För att garantera korrektheten för sidbeskrivningsspråken används webbaserade valideringsverktyg som finns tillgängliga på W3Cs webbplats. I kombination med detta verktyg kontrolleras själva sidans design i olika browsers på olika plattformar för att garantera att allting ser ut enligt det definierade gränssnittet.

Ett kompletterande verktyg var att granska den bakomliggande koden i systemet. Syftet var att observera den uppnådda graden av de generella egenskaperna som definierades i avsnitt 1.5.

Två mycket viktiga egenskaper att kontrollera var korrekthet och datasäkerhet. Genom att granska koden med syftet att hitta felaktigheter eller potentiella risker som en angripare skulle kunna utnyttja garanterar man en viss nivå av målen.

60(106)

Page 61: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Genomförande

3.4.2 Genomförande och resultat

ScenarionAlla sidors funktionalitet testades genom att utföra de aktiviteter som fanns i varje scenario. Felkontroller granskades i kombination med dess definition i databaskonfigureringssteget.

Två felaktigheter upptäcktes på kalendersidan som visades under vissa specifika omständigheter. Problemet uppenbarade sig när ett uppdrag började en söndagkväll och slutade på måndagen. En annan felaktighet inträffade samtidigt och resulterade i en felaktig visning av kalendern.

ValideringsfunktionerFör att kontrollera att sidbeskrivningsspråket tillämpats enligt den valda standarden XHTML Strict 1.0 användes W3Cs webbaserade valideringsfunktion samt dess motsvarighet för CSS.

Det visade sig att menysystemet inte var helt kompatibelt med XHTML Strict. Detta resulterade i en hel omskrivning av menysystemet där man baserade sig på a-taggen i kombination med div-taggen.

Valideringsfunktionen klagade också på några br-taggar som placerats utan div-taggar, något som rättades till relativt snabbt. Ett litet större problem existerade på rapporteringssidan för de timanställda. Om inget uppdrag behövdes rapportera genererades sidan felaktigt. Den halvfärdiga tabellen resulterade i ett felmeddelande. Problemet åtgärdades genom att endast generera tabellkod om det fanns något att rapportera.

Eftersom systemdesignen förespråkade plattformsoberoende kontrollerades funktionaliteten och sidbeskrivningens tolkning i olika browsers på olika plattformar. Det visade sig att systemet såg annorlunda ut i Internet Explorer jämfört med ett flertal andra browsers. Problemet var CSS-relaterat och åtgärdades till största grad efter en tids felsökning. Systemet såg mycket snarlikt ut på olika plattformar. Det förekom dock en viss avvikelse då fontrepresentation och utformning av inmatningsrutor m.m. var annorlunda utformat.

KodgranskningSystemet kod kontrollerades med syftet att hitta felaktigheter och potentiella risker. Tid ägnades åt att kontrollera att första steget i varje php-fil hanterade potentiella angripare. Om en obehörig individ försökte komma åt en php-fil redirectades individen till inloggningssidan.

Felhantering i systemet hanterades bl. a. genom granskning av innehållet samt genom att undvika potentiella SQL injectionförsök med citationstecken i SQL-frågan. En del av felhanteringen baserade sig på hur MySQL-servern betedde sig. Eftersom systemdesignen valt den databasservern som plattform ansågs det inte som något praktiskt problem. Det spekulerades dock om eventuella säkerhetsproblem om andra databasservrar användes. Men eftersom en mycket stor del av

61(106)

Page 62: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Genomförande

programkoden var bunden till MySQL-funktioner ansågs problemet vara försumbart då en hel omskrivning av systemet krävdes vid alternativa vägval.

Några mindre felaktigheter hittades i koden och löstes. Det förekom också en del bortkommenterade rader som använts vid tidigare kodning, som togs bort. Tid ägnades också åt att kontrollera att de MySQL-handtag som skapats också stängdes.

Totalt sett utförde systemet de steg som definierats. Det förekom några felaktigheter och problem, men de löstes. Felhanteringsfunktioner ansågs dock i vissa fall vara lite primitiva. Om tid fanns skulle dessa förfinas. Grundfunktionaliteten uppnåddes dock med de existerande funktionerna.

En annan aspekt med förbättringspotential var att systemet inte tillämpade det objektorienterade tankesättet i största möjliga grad. Om tid fanns skulle en sådan väg kunna ge en bättre systemdesign samt en effektivisering av systemet.

62(106)

Page 63: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Resultat

4 Resultat

4.1 PersonalhanteringssystemetSyftet med detta arbete var att lösa de definierade problemen och uppfylla de mål som definierats. I praktiska ordalag innebar detta ett webbaserat personalhanteringssystem där uppdragshantering och löneberäkningar utfördes.

Systemet som var uppdelat i tre delar: administrativ del samt del för timanställd. Dessa länkades ihop via en sida tillgänglig för alla på Internet med inloggningsfunktion.

Tonvikten i systemet var den administrativa delen där mest funktioner implementerades. Dessutom var komplexiteten naturligt större i den administrativa delen. Den timanställdas roll i systemet var endast att rapportera uppdrag. CV-funktionalitet prioriterades bort av tidsskäl.

4.1.1 Systemets öppna del

Den öppna delen av systemet bestod av fyra delar och dess funktionalitet beskrivs nedan.

• Inloggningssida (startsida)• Skapa användare• Skicka glömt lösenord till användarens

e-postadress.• Information om användningen av sessionscookies.

Delen fick en egen katalog vid namn “init” för att särskilja koden från resten av systemet. Epostfunktionaliteten baserade sig på systemets definierade klass “Mail”, som beskrevs i avsnitt 3.2 i rapporten.

I enlighet med svensk lagstiftning finns det en sida i systemet som talar om att cookies används. Den ger en översiktlig beskrivning av lagen samt återger systemets användning av sessionscookies. Länkar refererar till ytterligare information om ämnesområdet. Sidan är tillgänglig på alla sidor i den öppna delen av systemet.

63(106)

Page 64: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Resultat

Nedan visas några screenshots var syfte är att beskriva det implementerade användargränssnittet.

Figur 4-1: quickmatch.php

Figur 4-2: new_user.php

64(106)

Page 65: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Resultat

Figur 4-3: password.php

Figur 4-4: cookies.php

65(106)

Page 66: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Resultat

4.1.2 Systemets administrativa del

Den administrativa delen består förrutom startsida och logout-funktion utav sju separata delar. Dessa kan bl. a. hantera uppdragshantering och löneberäkningar. Information i systemet går vanligtvis att ändra via en ändrafunktion. De administrativa delarna är beskrivna nedan.

• Företagsuppgifter Lagrar information om företaget samt arbets- givaravgift och inkomst- skattsats.

• Timanställda Lagrar uppgifter om timanställda. Möjlighet för att söka samt ändra uppgifter finns.

• Kunder Lagrar uppgifter om kunder. En ny kund kan registreras via undermenyn “Lägg till”. Även funktioner för ändra samt söka finns.

• Uppdrag Uppdrag skapas via undermenyn “Lägg till”. Det går också att visa och ändra nya uppdrag. Sökfunktion baserat på årtal och vecka finns.

• Arbetstider Denna del är en kalender som veckovis visar vilka uppdrag som finns och deras status med olika färger. Delen har tvåundernivåer, en som visar rapporteringsstatus och en ytterligare nivå som visar rapporteringsstatus på individnivå.

• Ekonomi Sammanställer månadsvis alla uppdrag. Individuell funktion finns för att beräkna en timanställds lön under en specifik månad. Detaljerad information finns om uppdrag och beräkningar för den sistnämnda funktionaliteten.

• Log Denna sida beskriver systemets aktiviteter rörande systemets konton och potentiella säkerhetsrisker.

66(106)

Page 67: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Resultat

Syftet med nedanstående screenshot är att visa varje dels funktionalitet samt gränssnittsmässiga utformning. Bildsekvensen går från vänster till höger enligt systemets menysystem.

Figur 4-5: company.php

Figur 4-6: employees.php

67(106)

Page 68: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Resultat

Figur 4-7: customers.php

Figur 4-8: assignment.php

68(106)

Page 69: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Resultat

Figur 4-9: calender.php

Figur 4-10: economy.php

69(106)

Page 70: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Resultat

Figur 4-11: log.php

70(106)

Page 71: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Resultat

4.1.3 Systemets del för timanställda

En mycket stor del av denna del är baserat på koden från den administrativa sidan. Skillnaden är att de SQL-satser som exekveras är anpassade för den aktuella timanställda. Nedan beskrivs de delar som existerar i denna del av systemet. I enlighet med förra avsnittet beskrivs inte startsidan respektiva logout-delen av menyn.

• Inställningar Under detta menyalternativ kan man ändra personuppgifter samt kontouppgifter. Möjligheten att ändra sitt användarnamn i systemet finns bland alternativen.

• Uppdrag Denna del är identisk med den administrativa delen bortsett från skillnaden att informationen är individbaserad.

• Arbetstider Kalenderfunktion där man kan se de aktuella uppdragen och deras status. Det är samma funktion som den administrativa delen bortsett från sin individanpassade visning.

• Rapport Denna del är huvudfunktionen i denna del av systemet. Den timanställda rapporterar utförda uppdrag. Finns det flera uppdrag att rapportera visas alla på sidan.

71(106)

Page 72: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Resultat

Nedanstående figurer beskriver delens utseende.

Figur 4-12: preferences.php

Figur 4-13: assignment.php

72(106)

Page 73: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Resultat

Figur 4-14: calender.php

Figur 4-15: assignment_report.php

Som ett komplement till ovanstående figurer beskriver bilaga 3 hur systemet ser ut på olika plattformar. Bilagan ska visa till hur stor grad plattformsoberoende har uppnåtts.

73(106)

Page 74: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Resultat

4.2 SlutsatsDe krav på systemet som definierades i kravspecifikationen har uppfyllts. Målet med arbetet var att lösa de problem som beskrivits. Det fokuserade problemet som prioriterades var företagets ineffektiva hantering av uppdrag och dess indirekta löneberäkningar.

Resultatet av arbetet ledde till en effektivisering av denna uppdragshantering. Funktionaliteten för att kunna utföra dessa aktiviteter är implementerade i systemet. Istället för att utföra dessa uppgifter för hand kan man nu hantera uppdragen i datorn. Dessutom behöver inte företaget behandla den e-post som de timanställda skickar vid en rapportering. Utöver denna besparing i tid behöver inte heller den administrativa personalen ringa och påminna timanställda om glömda uppdragsrapporteringar då systemet gör detta automatiskt åt dem.

Om man relaterar till de generella mål som definierades under avsnitt 1.5, följer slutsatsen om att systemet har egenskaper som till en acceptabel nivå uppfyller dessa mål. Eftersom det i princip alltid finns förbättringspotential när det gäller dessa idealistiska mål måste man sätta en tröskelnivå någonstans. Dessa egenskaper har varit en mycket viktig del under systemets design och implementation. Några aspekter som särskilt har belysts under arbetets gång har varit principen om plattformsoberoende, korrekthet och säkerhet. Dessa har påverkat vägvalen avsevärt, medan andra aspekter har påverkat men inte till lika stor grad.

Systemet har på grund av den skrivna SMTP-klientfunktionen minimerat antal beroenden. Systemet kräver endast PHP och MySQL för att fungera.

Baserat på resultatet från testfasen och kompatibilitetskraven i kravspecifikationen tolkas graden av målens uppfyllande som acceptabla.

74(106)

Page 75: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Diskussion

5 DiskussionMan kan se systemets krav som uppfyllda, men eftersom det finns förbättringspotential i systemet kan det inte ses som fullständigt. Det finns dessutom stora möjligheter att bygga ut systemet med nya funktioner som ger mervärde för företaget. Arbetet blev begränsat i och med dess begränsade tidsperiod.

Utöver nämda förbättringsåtgärder hade man kunnat tillämpa mer objektorienterade aspekter under implementationsfasen. Detta hade gett en effektivare och kortare kod då man hade kunnat återanvända kod i större grad.

Man skulle också kunna skapa en mer sofistikerad felhantering och mer specifika felmeddelanden i systemet.

Om tid hade funnits hade man kunnat verifiera systemets användbarhet med hjälp utav brukarstudier. Detta hade gett feedback för förbättringsåtgärder.

Totalt sett kan man dock se arbetet som framgångsrikt då det löst de problem som definierats.

I och med systemets design finns stora möjligheter för utbyggnad. Därmed kan företaget effektivisera sin verksamhet ytterligare.

För att göra rapporten komplett har ett installationsexempel placerats som rapportens sista bilaga. Detta kan vara intressant för företaget i framtiden då det kan finnas en vilja att driva en egen server.

75(106)

Page 76: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Referensförteckning

6 Referensförteckning[1] IETF

Hypertext Transfer Protocol – HTTP/1.1RFC 2616, 1999

[2] IETFUniform Resource Identifier (URI): Generic SyntaxRFC 3986, 2005

[3] Stig Jensen & Arne Gjelstrup & Valentino BertiDatakommunikationLiber, 2000, ISBN: 91-47-01590-X

[4] James MarshallHTTP Made Really Easyhttp://www.jmarshall.com/easy/http/#postmethod (2005-04-20)

[5] David WhalenThe Unofficial Cookie FAQ v2.6http://www.cookiecentral.com/faq/ (2005-05-11)

[6] Peter GagnonThe Hypertext Transfer Procotolhttp://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol2/pcg1/ (2005-04-20)

[7] IETFSimple Mail Transfer ProtocolRFC 2821, 2001

[8] Spyros SakellariadisSMTP Mail Basicshttp://www.windowsitlibrary.com/Content/212/01/3.html?Ad=1& (2005-04-21)

[9] Trivial uses of Telnet - SMTP Scriptshttp://evolvedcode.net/content/doc_alttelnet/index_p5.asp (2005-04-21)

[10] IETFThe MIME Multipart/Related Content-typeRFC 1872, 1995

[11] Database Management Systemhttp://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?DBMS (2005-05-11)

[12] James GroffSQL:The complete Reference, second editionMcGraw-Hill Professional, 2002, ISBN: 0-07-222559-9

[13] ODBMS FAQhttp://www.service-architecture.com/object-oriented-databases/articles/odbms_faq.html (2005-04-06)

[14] Steve McClureObject Database vs. Object-Relational Databaseshttp://www.ca.com/products/jasmine/analyst/idc/14821E.htm#BKMTOC13 (2005-05-15)

76(106)

Page 77: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Referensförteckning

[15] Introduction to OMG UMLhttp://www.omg.org/gettingstarted/what_is_uml.htm (2005-04-05)

[16] Mats Apelkrans, Karita ÅbomOOS/UMLStudentlitteratur, 2001, ISBN: 91-44-02138-0

[17] Mark MaslakowskiLär dig MySQL på tre veckorPagina förlags AB, 2000, ISBN: 91-636-0627-5

[18] William KentA Simple Guide to Five Normal Forms in Relational Database Theoryhttp://www.bkent.net/Doc/simple5.htm (2005-05-15)

[19] Mike McGrathSQL in easy stepsComputer Step, 2004, ISBN: 1-84078-257-9

[20] Mike ChappleSQL Fundamentalshttp://databases.about.com/od/sql/a/sqlfundamentals.htm (2005-05-15)

[21] David R. FrickA SQL Vocabularyhttp://www.frick-cpa.com/ss7/Theory_SQL_Vocab.asp#DCL (2005-05-15)

[22] Raul Chong, Clara Liu, Sylvia Qi, Dwaine SnowIntroduction to DB2 UDBhttp://www.informit.com/articles/article.asp?p=375536&rl=1 (2005-05-15)

[23] Sybase ASE Historyhttp://www.ispirer.com/doc/sqlways38/Output/SQLWays-1-172.html (2005-05-15)

[24] 5 Things You Probably Didn't Know About T-SQLhttp://www.windowsitpro.com/Article/ArticleID/22831/22831.html (2005-05-15)

[25] SQL Server 2000 Product Overviewhttp://www.microsoft.com/sql/evaluation/overview/default.asp (2005-05-15)

[26] About MySQL ABhttp://www.mysql.com/company/ (2005-04-06)

[27] Frank NaudéFAQ about Oracle Corporation v1.37http://www.orafaq.com/faqora.htm (2005-05-15)

[28] Oracle Database 10ghttp://www.oracle.com/technology/products/database/oracle10g/index.html (2005-05-15)

[29] Chuck Musciano, Bill KennedyHTML The Definitive Guide, Third EditionO'Reilly, 1998, ISBN: 1-56592-492-4

77(106)

Page 78: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Referensförteckning

[30] W3CHTML 4.01 Specificationhttp://www.w3.org/TR/html401 (2005-05-15)

[31] HTML 4.01 Referencehttp://www.w3schools.com/html/html_ref_byfunc.asp (2005-04-07)

[32] A history of HTMLhttp://www.w3.org/People/Raggett/book4/ch02.html (2005-04-07)

[33] CSS 2.1 Specificationhttp://www.w3.org/TR/CSS21/ (2005-05-15)

[34] CSS Syntaxhttp://www.w3schools.com/css/css_syntax.asp (2005-04-07)

[35] Dave TaylorCreating Cool Web Sites with HTML, XHTML and CSSJohn Wiley and Sons, 2004, ISBN: 0764557386

[36] XHTML 1.0 The Extensible HyperText Markup Language (Second Edition)http://www.w3.org/TR/xhtml1/ (2005-05-15)

[37] April 2005 Web Server Surveyhttp://news.netcraft.com/archives/2005/04/01/april_2005_web_server_survey.html (2005-04-10)

[38] About the HTTP server projecthttp://httpd.apache.org/ABOUT_APACHE.html (2005-04-09)

[39] Apache Server Frequently Asked Questionshttp://httpd.apache.org/docs/misc/FAQ.html (2005-05-15)

[40] Frequently Asked Questionshttp://apache.org/foundation/faq.html#what (2005-04-09)

[41] Overview of Deploying IIS 6.0http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/f6fd347f-d336-4e8d-b2c0-3ae3d3e26d0d.mspx (2005-04-12)

[42] ISAPIhttp://www.webopedia.com/TERM/I/ISAPI.html (2005-05-15)

[43] Three-tierhttp://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?query=Three-tier&action=Search (2005-05-15)

[44] Three-tierhttp://www.webopedia.com/TERM/t/three_tier.html (2005-05-15)

[45] Internet Information Serviceshttp://www.microsoft.com/WindowsServer2003/iis/default.mspx (2005-05-15)

78(106)

Page 79: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Referensförteckning

[46] PC Magazine Performance Tests: Web Servershttp://www.pcmag.com/article2/0,1759,11536,00.asp (2005-04-12)

[47] Zeus, An All-Powerful Solution for the Enterprisehttp://www.serverwatch.com/sreviews/article.php/10903_3421791_1 (2005-04-12)

[48] Internet Explorer Overviewhttp://www.microsoft.com/windows/ie/evaluation/overview/default.mspx (2005-05-15)

[49] Why Use Firefox?http://www.mozilla.org/products/firefox/ (2005-05-15)

[50] Apple - Mac OS X - Safari RSShttp://www.apple.com/macosx/features/safari/ (2005-05-15)

[51] Introduction to ASPhttp://www.w3schools.com/asp/asp_intro.asp (2005-05-15)

[52] PHP vs. ASP.NEThttp://www.oracle.com/technology/pub/articles/hull_asp.html (2005-04-12)

[53] Common Gateway Interfacehttp://hoohoo.ncsa.uiuc.edu/cgi/intro.html (2005-05-15)

[54] FastCGI Homehttp://www.fastcgi.com/ (2005-04-12)

[55] FastCGI SpecificationMark R. Brownhttp://www.fastcgi.com/devkit/doc/fcgi-spec.html#S1 (2005-05-15)

[56] JavaServer Pages Technology - Implementations & Specificationshttp://java.sun.com/products/jsp/reference/api/index.html (2005-05-15)

[57] Java Servlet Technologyhttp://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets.html (2005-05-15)

[58] The Jakarta Site - Apache Jakarta Tomcathttp://jakarta.apache.org/tomcat/ (2005-05-15)

[59] What is PHP?http://se2.php.net/manual/en/introduction.php (2005-05-15)

[60] What can PHP do?http://se2.php.net/manual/en/intro-whatcando.php (2005-05-15)

[61] Using PHP from the command linehttp://www.php.net/manual/en/features.commandline.php (2005-04-19)

[62] Introduction to PHP-GTKhttp://gtk.php.net/manual/en/introduction.php (2005-04-19)

[63] Mike McGrathJavaScript in easy stepsComputer step, 2003, ISBN: 1-84078-255-2

79(106)

Page 80: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Referensförteckning

[64] David FlanaganJavaScript: The Definite GuideO'Reilly, 2002, 2002, ISBN: 0-596-00048-0

[65] Jan Gulliksen, Bengt GöranssonAnvändarcentrerad systemdesignStudentlitteratur, 2002, ISBN: 91-44-02029-5

[66] International Organization for StandardizationGuidance on UsabilityISO 9241-11, 1998

[67] Securityhttp://www.dtic.mil/doctrine/jel/doddict/data/s/04749.html (2005-05-15)

[68] Anderson, RossSecurity EngineeringWiley, 2001, ISBN 0471389226

[69] The CIA principlehttp://www.doc.ic.ac.uk/~ajs300m/security/CIA.htm (2005-05-15)

[70] Non-repudiationhttp://searchsecurity.techtarget.com/sDefinition/0,,sid14_gci761640,00.html (2005-05-15)

[71] What is cryptography?http://www.rsasecurity.com/rsalabs/node.asp?id=2157 (2005-05-15)

[72] Chris ShiflettApacheCon: PHP Securityhttp://shiflett.org/php-security.pdf (2005-04-23)

[73] SQL Injection Attacks By Examplehttp://www.unixwiz.net/techtips/sql-injection.html (2005-04-23)

[74] W3C Teknologihttp://www.w3.org/Consortium/technology.html (2005-04-18)

[75] W3C Historiahttp://www.w3.org/Consortium/history.html (2005-04-18)

[76] The W3C Technology Stackhttp://www.w3.org/2004/10/RecsFigure-Smaller.png (2005-05-15)

[77] W3C (World Wide Web Consortium)http://www.w3.org/Consortium/Overview.html (2005-04-18)

[78] JPEG image compression FAQhttp://www.faqs.org/faqs/jpeg-faq/part1/ (2005-05-15)

[79] JPEG Compressionhttp://www.fho-emden.de/~hoffmann/jpeg131200.pdf (2005-05-15)

80(106)

Page 81: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Referensförteckning

[80] An Overview of JPEG-2000http://www.rii.ricoh.com/%7Egormish/pdf/dcc2000_jpeg2000_note.pdf (2005-05-15)

[81] Intro to PNG featureshttp://www.libpng.org/pub/png/pngintro.html (2005-05-15)

[82] W3C, PNGhttp://www.w3.org/Graphics/PNG/ (2005-04-21)

[83] W3C, XHTML 1.0http://www.w3.org/MarkUp/ (2005-04-22)

[84] W3C, Cascading Style Sheetshttp://www.w3.org/Style/CSS/ (2005-04-22)

[85] W3C, Style Sheetshttp://www.w3.org/Style/ (2005-04-22)

[86] W3C, Date and Time Formatshttp://www.w3.org/TR/NOTE-datetime (2005-04-22)

[87] A summary of the International standard date and time notationhttp://www.cl.cam.ac.uk/~mgk25/iso-time.html (2005-04-22)

81(106)

Page 82: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Sökord

7 Sökord

82(106)

AAnvändarcentrerade system............38Apache.............................................29ASP..................................................34Avgränsning....................................10

CCGI..................................................35CSS..................................................26

DDatabasmodellering........................53Datasäkerhet...................................40DBMS..............................................17Diskussion.......................................75

HHTML..............................................25HTTP................................................11

IIBM DB2..........................................24IIS....................................................30Internet explorer.............................31

JJPEG................................................46JSP...................................................36

MMål och syfte...................................9Microsoft SQL Server......................24Mozilla Firefox................................32MySQL.............................................24

NNormalisering.................................19

OOracle..............................................24

PPHP..................................................36PNG.................................................48

RResultat...........................................63

SSafari...............................................33Slutsats............................................74SMTP...............................................14SQL..................................................19

VVerksamhetsbeskrivning.................7

WW3C.................................................45

XXHTML............................................28

ZZeus.................................................31

Page 83: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

BilagorBilaga 1 KravspecifikationBilaga 2 KlassdiagramBilaga 3 Screenshots ifrån olika plattformarBilaga 4 PHP-klasserBilaga 5 Installationsexempel

Page 84: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Bilaga 1 : Kravspecifikation

Funktionalitet: Administrativ del• Inloggningsfunktion• Hantering av företagsinformation (ändra)• Hantering av timanställda (söka, ändra)• Hantering av kunder (lägga till, söka, ändra)• Hantering av uppdrag (lägga till, söka, ändra)• Kalenderfunktion för att granska rapporteringar• Översiktlig månadsvis summering av uppdrag• Individuell månadsvis löneberäkning• Loggfunktion (övervakning av hur systemet används;

riskanalys och felsökning)• Utloggningsfunktion

Funktionalitet: Användardelen• Inloggningsfunktion• Epostfunktion som skickar glömda lösenord• Hantering av personuppgifter samt kontouppgifter• Kalenderfunktion för att granska individuella uppdrag • Rapporteringsfunktion för utförda uppdrag• Utloggningsfunktion

Funktionalitet: Automatiska funktioner• Epostfunktion som påminner användare om ej

rapporterade uppdrag (en vecka efter uppdragets datum).

Utformning av grafiskt gränssnitt• Ett användarcentrerat system som användare utan

större problem kan lära sig och arbeta effektivt i. Gränssnittet ska vara självförklarande, konsekvent samt lösa de aktuella problemen.

Kompatibelitetskrav• Plattformsoberoende design som minimerar beroenden

till andra programvaror om möjligt. Det ska gå att kunna köra systemet på alla plattformar.

• Systemet ska vara designat med långsiktighet och kompatibilitet som mål. Det ska gå att köra det på så många webbläsare som möjligt oavsett plattform. Det ska inte kräva några extra plugins, utan ska fungera med standardprogramvaror.

• Systemet är tänkt att köras på ett webbhotell. Det skall därför vara kompatibelt med sådana plattformar.

Page 85: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Bilaga 2 : Klassdiagram

Log Uppdrag_Medlem Timanstalld

Uppdrag Kund Foretagsuppgift

*ForetagsuppgiftIDForetagsnamnAdressPostnummerOrtTelefonnrMobiltelefonnrEpostadressOrganisationsnrMomsregnrBankgiroPlusgiroArbetsgivaravgiftInkomstskatt

*LogIDUsernameDatumTimestampIPDNSUserAgentTypBeskrivning

*KundIDForetagsnamnAdressPostnummerOrtKontaktpersonTelefonnrFaxnrMobiltelefonnr AvdelningEpostadress

*UsernamePasswordSkapadesTimanstalldID PersonnummerFornamnEfternamnAdressPostnummerOrtTelefonnrMobiltelefonnrEpostadress

*UppdragID*TimanstalldID RapporteratKommentarPaminnelseStarttidSluttidRast1_StarttidRast1_SluttidRast2_StarttidRast2_SluttidRast3_StarttidRast3_Sluttid

*UppdragIDDatumStarttidSluttidForetagsnamnBeskrivningKommentarT_Dag_Starttid T_Dag_SluttidT_Kvall_StarttidT_Kvall_SluttidT_Natt_StarttidT_Natt_SluttidT_Dag_LonT_Kvall_LonT_Natt_Lon

1..* 1 1..* 1

1

1..*

1 0..*

Page 86: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Förtydligande beskrivning av relationerna:

• En kund kan vara med i inget eller flera uppdrag. Ett uppdrag refererar endast till en kund.

• Varje Uppdrag har en eller flera medlemmar, medan varje medlem av uppdraget har en relation till tabellen uppdrag.

• Varje Uppdrag består av en eller flera timanställda. En timanställd kan förekomma en gång per uppdrag.

• En timanställd har inga eller flera loggar. En log refererar endast till en timanställd.

Page 87: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Bilaga 3 : Screenshots ifrån olika plattformarnew_assignment.php

Internet Explorer, Windows

Mozilla Firefox, Linux

Page 88: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Safari, Mac OS X

calender.php

Internet Explorer, Windows

Page 89: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Mozilla Firefox, Linux

Safari, Mac OS X

Page 90: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

economy.php

Internet Explorer, Windows

Mozilla Firefox, Linux

Page 91: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Safari, Mac OS X

Page 92: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Bilaga 4 : PHP-klasser

Nedanstående kod är anpassad för det utvecklingssystem som använts vid skapandet av systemet. Lösenord och liknande uppgifter har ingen relation till den verkliga implementationen.

class Time { #---------------------------------------------------------- # Functions for today's time #----------------------------------------------------------

# Return today's year, 4 digits public function TodayYear() { $year = date("Y"); return $year; }

# Return today's month, without leading zeros public function TodayMonth() { $month = date("n"); return $month; }

# Return today's day of the month, without leading zeros public function TodayDay() { $day = date("j"); return $day; }

# Return today's week public function TodayWeek() { $week = date("W"); return $week; }

# Return ISO 8601 formated string public function TodayISO8601() { $date = date("c"); $date = substr($date,0,10); return $date; }

# Return UNIX timestamp formatted integer public function TodayUNIXTimestamp() { $timestamp = date("U"); return $timestamp;

}

Page 93: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

#---------------------------------------------------------- # Generic time functions #----------------------------------------------------------

# Calculate the date for the monday in a week. Return value in UNIX timeformat public function MondayDateWeek($year,$week) { $days = array("Mon","Tue","Wed","Thu","Fri","Sat","Sun");

# Calculate the dayname for the 4th January (the 4th always in week 1) $day = date("D",mktime(0,0,0,1,4,$year) );

# Determine which index to use for($i = 0; $i<7 ; $i++) { if ($days[$i] == $day) break; }

# Calculate the date for the monday in that week $firstmonday = (4 - $i);

# Take care of weeks that begin on the previous year if ($firstmonday < 1) { $firstmonday = (31 + $firstmonday); $time = mktime(0,0,0,12, ($firstmonday + (($week-1) * 7 )), ($year-1) ) ; } # Take care of all other years else { $time = mktime(0,0,0,1, ($firstmonday + (($week-1) * 7 )),$year ) ; }

return $time; }

# Return Year from UNIX timeformat public function UNIXtoYear($time) { $year = date("Y",$time); return $year; }

# Return Month from UNIX timeformat public function UNIXtoMonth($time) { $month = date("n",$time); return $month; }

# Return Day from UNIX timeformat public function UNIXtoDay($time) { $day = date("j",$time); return $day; }

# Return the week number from UNIX timeformat public function UNIXtoWeek($time) {

Page 94: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

$week = date("W",$time); return $week;

}

# Return total number of weeks in a year public function NrWeeks($year) { for ($i=25;$i<=40;$i++) { $weeknr = date("W",mktime(0,0,0,12,$i,$year) ) . "<br>"; if ($weeknr == 53) break;

} if ($i == 41) return 52; else return 53; }

# Calculate which month that is dominating in a week. Based on MondayDateWeek() public function DominatingMonth($time) { $month_count = array(0,0,0,0,0,0,0,0,0,0,0,0); for($i=0; $i<7; $i++) { $month = date("n",($time+ (3600*24*$i) ) ) . "<br>"; switch ($month) { case 1: $month_count[0] += 1; break; case 2: $month_count[1] += 1; break; case 3: $month_count[2] += 1; break; case 4: $month_count[3] += 1; break; case 5: $month_count[4] += 1; break; case 6: $month_count[5] += 1; break; case 7: $month_count[6] += 1; break; case 8: $month_count[7] += 1; break; case 9: $month_count[8] += 1; break; case 10: $month_count[9] += 1; break; case 11: $month_count[10] += 1; break; case 12:

Page 95: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

$month_count[11] += 1; break; } }

# Determine the highest countvalue $max = 0; for($i=0; $i<12; $i++) { if ($month_count[$i] > $max) $max = $month_count[$i]; }

# Find the month that has the highest countvalue for($i=0; $i<12; $i++) { if ($month_count[$i] == $max) break; } $dominating_month = ($i + 1); return $dominating_month;

}

# Return the year from ISO8601 format public function ISO8601_to_year($date) { return substr($date,0,4) ; }

# Return the month from ISO8601 format public function ISO8601_to_month($date) { if (substr($date,5,1) == "0") return substr($date,6,1) ; else return substr($date,5,2); }

# Retorn the day from ISO8601 format public function ISO8601_to_day($date) { if (substr($date,8,1) == "0") return substr($date,9,1) ; else return substr($date,8,2); } # Return date in ISO8601 format from three variables # with no preceding zero public function toValidISO8601($year,$month,$day) {

if ($month < 10) { if ($day < 10) $date = $year . "-0" . $month . "-0" . $day; else $date = $year . "-0" . $month . "-" . $day; } else { if ($day < 10)

Page 96: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

$date = $year . "-" . $month . "-0" . $day; else $date = $year . "-" . $month . "-" . $day; } return $date; }

}

class Mail {

public function send_mail($mail_from,$mail_to,$subject,$message_plain_text, $message_html)

{ #--- Sends an e-mail encoded with base64 with MIME (plain text & html) ---

# Define system specific parameters $local_hostname = "guilong.org"; $smtp_hostname = "smtp.bredband.net"; $phpheader = "PHP/" . phpversion();

# Encode message data into base64 format $base64_plain_text = base64_encode($message_plain_text); $base64_html = base64_encode($message_html);

# Collect message data and concaternate it into a string $CRLF = "\r\n"; $message = $CRLF . "This is a multi-part message in MIME format." . $CRLF . $CRLF . "--next_part" . $CRLF . "Content-Type: text/plain; charset=\"ISO-8859-1\"" . $CRLF . "Content-Transfer-Encoding: base64" . $CRLF . $CRLF . $base64_plain_text . $CRLF . $CRLF . "--next_part" . $CRLF . "Content-Type: text/html; charset=\"ISO-8859-1\"" . $CRLF . "Content-Transfer-Encoding: base64" . $CRLF . $CRLF . $base64_html . $CRLF . $CRLF . "--next_part--" . $CRLF . $CRLF . "." . $CRLF ;

# Create SMTP command strings $HELLO = "HELO " . $local_hostname . $CRLF; $MAIL_FROM = "MAIL FROM: " . $mail_from . $CRLF; $RCPT_TO = "RCPT TO: " . $mail_to . $CRLF; $DATA = "DATA" . $CRLF; $MESSAGE = "MIME-Version: 1.0" . $CRLF . "Content-Type: multipart/alternative; boundary=\"next_part\"" .

$CRLF .

"From: Quickmatch" . $CRLF . "To: " . $mail_to . $CRLF . "Subject: " . $subject . $CRLF . "X-Mailer: " . $phpheader . $CRLF . $message ; $QUIT = "QUIT" . $CRLF ;

$command_sequence = array($HELLO,$MAIL_FROM,$RCPT_TO,$DATA,$MESSAGE);

# Create socket and send the data $fp = @fsockopen($smtp_hostname, 25); $status = 0;

if (!$fp)

Page 97: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

{ #Cannot connect to specified hostname $status = -1; } else {

for($i=0;$i<=4;$i++) { if ($i ==0) { $result = @fgets($fp, 1024); #echo $result; } if ( ($i == 0) && (substr($result,0,3) == 220) ) { @fputs($fp,$command_sequence[$i]); $result = @fgets($fp, 1024); #echo $result; } else if ( ($i > 0) && (substr($result,0,3) == 250) ) { @fputs($fp,$command_sequence[$i]); $result = @fgets($fp, 1024); #echo $result;

} else if ( ($i == 4) && (substr($result,0,3) == 354) ) { @fputs($fp,$command_sequence[$i]); $result = @fgets($fp, 1024); #echo $result; } else { #An error occured while communicating with server $status = -1; break; }

# Everything went well if ($i == 4) $status = 1; }

#Send quit command @fputs($fp, $QUIT);

$result = @fgets($fp, 1024); #echo $result; } # Close socket @fclose($fp);

if($status == 1) return $status; else { #An error occured while sending data return $status; } } }

Page 98: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

class Log { public function log_entry($username,$type,$description) { # Create connection to database $handle_ID = mysql_connect("localhost","mysql","SYu#aR8u%9GX") ; $select = mysql_select_db("Quickmatch") ;

$SQL = "SELECT MAX(LogID) AS MaxLogID FROM Log;"; $res_ID = mysql_query($SQL,$handle_ID); $row=mysql_fetch_object($res_ID); $nextvalue = ($row->MaxLogID + 1);

$Time = new Time; $date = $Time->TodayISO8601(); $timestamp = $Time->TodayUNIXTimestamp();

$ip = $_SERVER['REMOTE_ADDR']; #$dns = $_SERVER['REMOTE_HOST']; $useragent = $_SERVER['HTTP_USER_AGENT'];

# Add entry without DNS value, which can be added manually (for performance reasons)

$SQL = "INSERT INTO Log(LogID,Username,Datum,Timestamp,IP,UserAgent,Typ,Beskrivning) VALUES ($nextvalue,\"$username\",\"$date\",$timestamp,\"$ip\",\"$useragent\",$type,\"$description\")";

$res_ID = mysql_query($SQL,$handle_ID);

# Close database connection mysql_close($handle_ID); }

public function clear_log() { # Create connection to database $handle_ID = mysql_connect("localhost","mysql","SYu#aR8u%9GX") ; $select = mysql_select_db("Quickmatch") ;

# Clear table exept for reference row $SQL = "DELETE FROM Log WHERE LogID >0"; $res_ID = mysql_query($SQL,$handle_ID);

#Close database connection mysql_close($handle_ID);

}

}

Page 99: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Bilaga 5 : Installationsexempel

Eftersom systemet är plattformsoberoende existerar ett flertal fungerande lösningar. En vanlig variant är dock att använda sig av operativsystemet Linux som på grund av sin licensmodell har många fördelar. Nedan beskrivs en möjlig implementation som inriktar sig på fallet där företaget hanterar en egen server.

Detaljerna i exemplet (programversioner) kommer av naturliga skäl att förändras med tiden, medan de principiella stegen kommer vara oförändrade. I likhet med bilaga 4 beskrivs lösenord för testsystemet som inte används i den verkliga implementationen.

Beskrivningen nedan baserar sig på följande nätverksstruktur:

KärnanOm kärnan tidigare är konfigurerad för någon annan tillämpning, kan detta påverka säkerheten och prestandan. I enstaka fall kan det dock visa sig att även stabiliteten kan påverkas. Drivrutiner som fungerar klanderfritt på vissa chipsets kan orsaka kernel panic eller något mindre allvarligt stabilitetsproblem. Av denna anledning är det fördelaktigt att anpassa kärnan specifikt för en viss datorkonfiguration.

Metod för att starta kernelkonfigureringen (i /usr/src):

tar jxvf linux-2.6.10.tar.bz2ln -s linux-2.6.10 linuxcd linuxmake menuconfig

Kommandot “make menuconfig” startar upp ett textbaserat menysystem (ncursesbaserat), där man ställer in lämplig konfiguration.

Page 100: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Hur denna konfigurering utförs är helt och hållet beroende på hårdvaran. Man kan ge vissa riktlinjer men i princip är det en unik konfigurering. Eftersom det är relativt orelevant att beskriva vilka lågnivådrivrutiner man valt (t.ex. vilken ATA-driver man valt) beskrivs högnivådrivrutiner som direkt påverkar serverns funktionalitet. Man kan benämna det som maskinoberoende inställningar.

För att operativsystemet ska fungera bättre under hög belastning har kerneloption:et “Preemptible Kernel” (CONFIG_PREEMPT) aktiverats. Detta val minskar kernel-latencyn genom att tillåta avbryting för vissa processer när de är i kernel mode.

Eftersom servern kommer vara anslutet till Internet med risk för DoS-attacker har “IP: TCP syncookie support” (CONFIG_SYN_COOKIES) aktiverats för att minimera de tänkbara problemen. Med denna inställning påslagen kan klienter kommunicera med servern trots samtidig SYN flooding. En nackdel med denna metod är att felrapportering när servern verkligen är belastad på normalt sätt inte sker till klienter.

Det är dock sannolikt att serverns normala belastning aldrig når den gränsen och därmed blir detta inget problem. För att aktivera TCP syncookie support måste man förrutom kernelstödet även aktivera det med:

echo 1 >/proc/sys/net/ipv4/tcp_syncookies

Detta kan göras t. ex. via initscriptet “/etc/rc.d/rc.local”.

För att garantera att ingen trafik överhuvud taget ska kunna existera mellan server och klient på någon annan port än 80 och 22 väljs inställningen “Network packet filtering”. Följande moduler kompileras in i kärnan:

IP: Netfilter Configuration: Connection trackin (CONFIG_IP_NF_CONNTRACK) IP tables support (CONFIG_IP_NF_IPTABLES) limit match support (CONFIG_IP_NF_MATCH_LIMIT) MAC address match support (CONFIG_IP_NF_MATCH_MAC) TTL match support (CONFIG_IP_NF_MATCH_TTL) Connection state match support (CONFIG_IP_NF_MATCH_STATE) Connection tracking match support (CONFIG_IP_NF_MATCH_CONNTRACK) Packet filtering (CONFIG_IP_NF_FILTER) LOG target (CONFIG_IP_NF_TARGET_LOG)

Page 101: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Kärnan som användes var 2.6.10. Raderna för att kompilera och konfigurera denna var följande:

makemake modules_installcp arch/i386/boot/bzImage /boot/linux-2.6.10

Efter editering av /etc/lilo.conf uppdateras hårddiskens MBR (/dev/hda i detta fallet) med kommandot:

/sbin/lilo

Systemverktyg och standardtjänsterDet systemverktyg som behövdes uppdateras i detta system var iptables för brandväggsfunktionen. Metod att kompilera och installera:

tar jxvf iptables-1.2.11.tar.bz2cd iptables-1.2.11make KERNEL_DIR=/usr/src/linuxmake install KERNEL_DIR=/usr/src/linux

En servertjänst som man bör hålla uppdaterad i ett unix-system är OpenSSH. Det baserar sig på OpenSSL-libraryt, som kompileras med följande kommandon:

tar zxvf openssl-0.9.7e.tar.gzcd openssl-0.9.7e./config --openssldir=/etc/ssl --prefix=/usr shared

Editera filen “Makefile”, och byt ut -m486 mot -march=i686 under avsnittet som definierar CFLAGS. Exekvera sedan följande rader:

makemake installldconfig

Värt att påpeka är att i och med version 0.9.7 ingår openssl-engine i det vanliga paketet, något som tidigare krävde separat kompilering.

Vidare krävs kompilering av OpenSSH som i praktiska ordalag kan beskrivas som servertjänsten sshd och klienten ssh. Första steget är kompilering som utförs med nedanstående kommandon:

tar zxvf openssh-3.9p1.tar.gzcd openssh-3.9p1./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-md5-passwordsmakemake install

Om OpenSSH inte fanns installerat i systemet tidigare bör följande rad läggas in i /etc/rc.d/rc.local:

/usr/sbin/sshd

Page 102: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

ServertjänsterDe servertjänster som var aktuella att installera på Linuxdatorn var Apache, MySQL och PHP. Som ett säkerhetstillägg till php användes hardened-php. För att nedanstående LAMP-kompilering skulle kunna gå att genomföra krävdes en viss kompileringsordning. Det första momentet var att kompilera Apache. Servern baserade sig på Apache 2.x-serien därför att den har en bättre uppbyggnad än 1.x-serien. Varianten är mer lämplig för framtida utvecklingar. Följande kommandon användes för att kompilera programvaran:

tar jxvf httpd-2.0.52.tar.bz2cd httpd-2.0.52./configure --prefix=/usr/local/apache --enable-somakemake install Växeln “–enable-so” valdes för att få kompatibilitet med PHP. Denna växel aktiverar programmet apxs, som är ett verktyg för att hantera modulfiler för apache (DSO). Värt att notera är att apxs kräver Perl installerat i systemet.

Efter ovanstående Apacheinstallation utfördes kompilering och konfigurering av MySQL. 4.1.x-serien valdes eftersom den versionen rekommenderas. Kompileringsdelen av MySQL utfördes enligt nedanstående metodik:

tar zxvf mysql-4.1.9.tar.gzcd mysql-4.1.9./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql --with-charset=latin1make make install

Därefter utfördes följande konfiguration:

useradd mysql scripts/mysql_install_dbcd /usr/local/mysqlchown -R mysql var

Raden “-:mysql:ALL” lades till i filen /etc/login.access.

Därefter startades servertjänsten med:

bin/mysqld_safe --user=mysql &

När tjänsten startades sattes root-lösenordet med hjälp av följande rad:

/usr/local/mysql/bin/mysqladmin -u root password 'SYu#aR8u%9GX'

För att extern programvara ska kunna hitta de librarys som finns till MySQL måste följande rad läggas till i filen /etc/ld.so.conf:

/usr/local/mysql/lib/mysql

Page 103: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

För att systemet skulle uppdatera sin lista över aktuella librarys exekverades följande kommando:

ldconfig

Sedan var det dags att kompilera PHP. Som tidigare nämnts patchades PHP med hardened-php. Detta utfördes med följande kommandosekvens:

tar jxvf php-5.0.3.tar.bz2gzip -d hardened-php-5.0.3-0.2.6.patch.gzcd php-5.0.3patch -p 1 < ../hardened-php-5.0.3-0.2.6.patch./configure --with-apxs2=/usr/local/apache/bin/apxs \ --with-mysql=/usr/local/mysql \ --with-config-file-path=/usr/local/apache/confmake make install

Konfigureringen bestod av följande åtgärder:

cp php.ini-dist /usr/local/apache/conf/php.inicd /usr/local/apache/conf

Följande rader lades till lfilen /usr/local/apache/conf/httpd.conf på lämpliga avsnitt i filen:

LoadModule php5_module libexec/libphp5.soAddType application/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps

Därefter var det dags att installera en säker och stabil FTP server. Vsftpd valdes på grund av dess mycket goda rykte. För att installera servern exekverades följande kommandon:

tar zxvf vsftpd-2.0.1.tar.gz cd vsftpd-2.0.1

Editera “builddefs.h” och kommentera bort raden “#define VSF_BUILD_PAM” med C-syntax och kör sedan följande kommandosekvens:

makeuseradd nobodymkdir /usr/share/emptymkdir /var/ftpuserdel ftpuseradd -d /var/ftp ftpchown root.root /var/ftpchmod og-w /var/ftpcp vsftpd /usr/local/sbin/vsftpdcp vsftpd.conf.5 /usr/local/man/man5cp vsftpd.8 /usr/local/man/man8cp vsftpd.conf /etctouch /etc/vsftpd.chroot_list

Page 104: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

Gå in i filen /etc/vsftpd.conf och ändra/lägg till följande rader:

local_enable=YESwrite_enable=YES chroot_list_enable=YEScheck_shell=NOlisten=YES

lägg till raden "www" i filen /etc/vsftpd.chroot_listSkriv sedan följande kommando för att göra i ordning den berörda användaren:

useradd -d /home/www wwwmkdir /home/wwwchown www /home/wwwpasswd www (ett lösenord skrevs in)

Sammanfattningsvis lades följande rader till i filen /etc/rc.d/rc.local:

/usr/local/apache/bin/apachectl start/usr/local/mysql/bin/mysqld_safe --user=mysql &/usr/local/sbin/vsftpd &

Systemet startades om med reboot för att uppdatera kärnan och aktivera alla serverfunktioner.

/etc/rc.d/rc.firewall#!/bin/sh# /etc/rc.d/rc.firewall

# Sökväg till iptablesIPT="/usr/local/sbin/iptables"SERVER="192.168.2.3"LOCAL_NET="192.168.2.0/24"

# Rensa allt och påtvinga borttagning av kedjan purge,logging$IPT -F$IPT -X purge$IPT -X normal$IPT -X logging

# Skapa kedjan firewall,logging$IPT -N purge$IPT -N normal$IPT -N logging

# Hoppa till purge$IPT -A INPUT -j purge$IPT -A OUTPUT -j purge

# PURGE#---------------------------------------------------------------------------#$IPT -A purge -j logging

# Rensa bort alla TCP-paket som innehåller otillåten flaggkombination$IPT -A purge -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP$IPT -A purge -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP

Page 105: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

$IPT -A purge -p tcp --tcp-flags SYN,RST SYN,RST -j DROP$IPT -A purge -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP$IPT -A purge -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP$IPT -A purge -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP$IPT -A purge -p tcp --tcp-flags SYN,RST SYN,RST -j DROP$IPT -A purge -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP$IPT -A purge -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP$IPT -A purge -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP$IPT -A purge -p tcp --tcp-flags SYN,RST SYN,RST -j DROP$IPT -A purge -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP$IPT -A purge -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP$IPT -A purge -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP$IPT -A purge -p tcp --tcp-flags SYN,RST SYN,RST -j DROP$IPT -A purge -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP

# Hoppa till normal$IPT -A purge -j normal

# NORMAL#----------------------------------------------------------------------------#$IPT -A normal -j logging

# Localhost$IPT -A normal -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

# ICMP$IPT -A normal -p icmp --icmp-type echo-request -j ACCEPT$IPT -A normal -p icmp --icmp-typ echo-reply -j ACCEPT

# HTTP$IPT -A normal -p tcp -d $SERVER --dport 80 --syn -j ACCEPT$IPT -A normal -p tcp -s $SERVER --sport 80 -m state --state ESTABLISHED -j ACCEPT$IPT -A normal -p tcp -d $SERVER --dport 80 -m state --state ESTABLISHED -j ACCEPT

# SSH$IPT -A normal -p tcp -d $SERVER --dport 22 --syn -j ACCEPT$IPT -A normal -p tcp -s $SERVER --sport 22 -m state --state ESTABLISHED -j ACCEPT$IPT -A normal -p tcp -d $SERVER --dport 22 -m state --state ESTABLISHED -j ACCEPT

# FTP$IPT -A normal -p tcp -s $LOCAL_NET -d $SERVER --sport 1024:65535 --dport 20 -j ACCEPT$IPT -A normal -p tcp -s $LOCAL_NET -d $SERVER --sport 1024:65535 --dport 21 -j ACCEPT$IPT -A normal -p tcp -s $SERVER -d $LOCAL_NET --sport 20 --dport 1024:65535 -j ACCEPT$IPT -A normal -p tcp -s $SERVER -d $LOCAL_NET --sport 21 --dport 1024:65535 -j ACCEPT

# DNS$IPT -A normal -p udp -s $SERVER --dport 53 -j ACCEPT$IPT -A normal -p udp -d $SERVER --sport 53 -j ACCEPT

# Hoppa till logging$IPT -A normal -j logging

Page 106: Design och implementering av ett webbaserat ...24435/FULLTEXT01.pdf · huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper

# LOGGING#-----------------------------------------------------------------------------$IPT -A logging -m limit -j LOG --log-level info --log-prefix "Firewall:"

# Kasta alla paket som gått igenom hela skriptet$IPT -A logging -j DROP