Change search
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • harvard1
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf
Webbutveckling: Säkerhet och prestanda
KTH, School of Information and Communication Technology (ICT).
2015 (Swedish)Independent thesis Basic level (degree of Bachelor), 10 credits / 15 HE creditsStudent thesis
Abstract [sv]

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. Asynchronous Javacript and XML (AJAX) [3] är den metod som krävde mest tid att implementera eftersom det kräver flera moment, skicka förfrågan till server, servern behandlar förfrågan och skickar tillbaka till klienten som hanterar resultatet. Trots det så blev tiden väl spenderad i förhållande till målet jag ville uppnå om bättre responstid för användarna. 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

Abstract [en]

The purpose of this document is to present different security risks that exist for web applications and in detail describe how and why SQL injections are used and also how these attacks can be prevented. Apart from security this document will also compare different methods to improve software performance. Methods included will be Asynchrounous Javascript And XML (AJAX), decrease memory usage and also how to minimize the number of requests between frontend and backend. The result regarding SQL injection attacks shows that PHP Data Object (PDO) effectively prevents these types of attacks with very small effort from the developer in new applications. For existing applications all request to the database must be adjusted but then the developer doesn’t have to worry about user input validation. After the discovery of public invoices, an URL to the invoice PDF file causing search engines to find the invoices, the location of invoices where moved to a private storage. By using the Kufu platform the security issues were solved with the build in authentication and privilege management and the invoices are now only accessed through the application. All tests regarding performance showed a positive result. Some more than others but the time for implementation could vary which affects the decisions. Asynchronous Javacript and XML (AJAX) [3] is the most time consuming method to implement since it require serveral steps, send request to server, server manages the request and sends it back to client which manages the result. Compared to the goal I wanted to achieve for better user experience that time was well spent. The database indexes decreases the time load but could cause bottle necks if used incorrectly. By using as few indexes as possible on a table the performance will improve regarding INSERT, UPDATE and DELETE request. If a table uses SELECT much more than the others then using indexes will be more effective than the other way around. Database performance covers a wide area of information but this document will only cover indexes. Other performance improvements that’s been covered was to minimize the number of server requests from the client but by focusing on methods with low cost and hopefully big effect. CSS Sprites is one of these methods that creates a large image of smaller images. Instead of requesting each small image separately only one request is made for the large image. Even though the large image may be bigger than all the small ones the performance will be improved by the number of requests. Also minimizing code files by removing row breaks and spaces in the code will decrease the request size and therefore decrease page load. There are several online tools for these methods which keeps the implementation costs low and the effect can be high. The testing results shows that the application performance has been improved. Some of the methods have only been implemented in one view which may give a misleading result since each view may vary and depending on how the data is used in each view different methods could be more or less effective.

Place, publisher, year, edition, pages
2015. , 58 p.
Series
TRITA-ICT-EX, 2015:64
National Category
Computer and Information Science
Identifiers
URN: urn:nbn:se:kth:diva-175391OAI: oai:DiVA.org:kth-175391DiVA: diva2:860694
Educational program
Bachelor of Science in Engineering - Computer Engineering
Examiners
Available from: 2015-10-13 Created: 2015-10-13 Last updated: 2016-05-10Bibliographically approved

Open Access in DiVA

fulltext(2032 kB)43 downloads
File information
File name FULLTEXT01.pdfFile size 2032 kBChecksum SHA-512
74273003f182108abd5b2daff3aa5a9265b575dd1ebf936893abaeb26cf6a57c71949b02231a7a4b257d109279f3b5f4af8323b2625bfa017f59ad8a1572f1a6
Type fulltextMimetype application/pdf

By organisation
School of Information and Communication Technology (ICT)
Computer and Information Science

Search outside of DiVA

GoogleGoogle Scholar
Total: 43 downloads
The number of downloads is the sum of all downloads of full texts. It may include eg previous versions that are now no longer available

urn-nbn

Altmetric score

urn-nbn
Total: 239 hits
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • harvard1
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf