Presentation av examensarbete - högskoleingenjör
Titel: WEBBUTVECKLING, Säkerhet och prestanda
Respondent: Dennis Löfgren
Datum och tid: 2015-06-15 kl 10
Plats: Further AB, Torshamnsgatan 28A, Kista
Opponenter: ?
Språk: engelska / svenska
Anmälan: Anders Sjögren, as@kth.se
Abstract
Den här rapporten visar olika säkerhetsrisker som finns för en webbapplikation och mer detaljerat beskriver hur och vad SQL injection-attacker används för samt hur dessa attacker kan förhindras.
Utöver säkerheten undersöks olika metoder för prestandaförbättringar. Rapporten riktar in sig på mjukvaruförbättringar inom bland annat Asynchrounous Javascript And XML (AJAX) [3], minskad minnesanvändning och minimera antalet anrop mellan klient och server.
Resultatet vad gäller säkerhet mot SQL-angrepp visar att PHP Data Object (PDO) effektivt förhindrar dessa attacker. Det krävs inte mycket arbete för utvecklaren att genomföra detta i nya applikationer och det gör applikationen säker mot SQL injections. I befintliga applikationer måste varje anrop anpassas men utvecklaren behöver sen inte tänka på att hantera input från användaren.
Problemet med publika fakturor, dvs en publik direktlänk till varje respektiva faktura PDF, löstes genom att utgå från systemet egna ramverk för hantering av authentisering och rättigheter. Alla PDF-filer lagras privat utan åtkomst utifrån applikationen.
Samtliga tester gällande prestanda visade positiv inverkan hos applikationen. Vissa mer än andra men tiden för implementation varierade och påverkar besluten. AJAX är den metod som krävde mest tid att genomföra men i förhållande till målet jag ville uppnå om bättre responstid för användarna så blev tiden väl spenderad. Indexering av databastabeller minskar ner sökningstiden för varje anrop men kan skapa flaskhalsar om de inte används på rätt sätt. Genom att hålla nere antalet index på en tabell så förbättras prestandan för INSERT, UPDATE och DELETE. Om en tabell används ofta för sökning istället för att ändra data så är det effektivt att använda index. Databasprestanda är ett väldigt brett och omfattande område vilket denna rapport endast gått igenom en bråkdel av genom att fokusera på indexering.
Andra prestandaförbättringar som undersökts är olika metoder för att minska antalet anrop mellan klient och server. Här har fokus legat på metoder som kräver en låg kostnad men med förhoppning om stor effekt. CSS Sprites är en sådan metod som skapar en stor bild av flera mindre bilder. Istället för att hämta varje bild enskilt så hämtas en större bild. Antalet anrop minskar med den sammansatta bilden blir oftast större än de små tillsammans. Trots detta så övervägs detta oftast med färre anrop. Minimering av filer är också en enkel metod som strävar efter att minska storleken på filer genom att ta bort radbrytningar och onödiga mellanslag i koden. Olika online verktyg finns för att enkelt åstadkomma detta vilket gör att kostnade för implementering blir låg och effekten kan bli hög.
Slutligen har resultatet visat att applikationens prestanda har förbättrats. Vissa av metoderna har endast implementerats i en vy vilket kan ge ett skevt resultat då varje vy kan variera och beroende på hur data används i respektive vy kan olika metoder vara mer effektiva.