Tuesday, October 16, 2007

FAGBOK: "Innocent Code - a security wake-up call for web programmers" av Sverre H. Huseby

Det finnes andre farer for web-applikasjoner enn de man kan beskytte seg mot med brannvegger og kryptering. Farer som oppstår fordi web-klient og server ikke er skrevet med en gjennomtenkt strategi for sikkerhet. Programmerene må vite om hvilke angrep som kan komme og hvordan applikasjonen må kodes for å kunne motstå disse angrepene.
Rule 1: "Do not underestimate the power of the dark side".

Boken starter med en gjennomgang av HTTP- og HTTPS-protokollene. Her beskrives også cookies og sesjoner.

Neste del av boken beskriver håndtering av input fra klienten til serveren. De viktigste budskapene er
  • Serveren kan aldri stole på data som kommer fra klienten. Den kreative bruker kan skrive inn tekst som kan får katastrofale følger på serveren hvis den ikke kontrolleres nøye før den sendes videre til f.eks. databasen. Både SQL-injection og Shell Command injection beskrives, både teoretisk og med morsomme eksempler. Og det beskrives hvordan serverkoden skal skrives for å beskytte seg mot slike angrep.
  • Serveren kan ikke stole på valideringer som foretas på klienten. Det er en enkel sak for en bruker å endre klientkoden slik at den f.eks. tillater verdier som den originale koden ville sperret.
  • Serveren kan ikke stole på at verdier som den sender til klienten kommer uforandret tilbake. Det finnes f.eks. salgsapplikasjoner som lagrer varesum i et skjult felt i klienten. Det er en smal sak for en bruker å endre klientkoden slik at slike verdier kan endres før de går tilbake til serveren.
  • Serveren må sende minst mulig tilstandsinformasjon og feilmeldinger til klienten. Slik informasjon kan være viktig informasjon for en angriper.
Neste del av boken beskriver hvordan en bruker av en web-applikasjon kan angripes. Dette kan f.eks. skje ved at en bruker stjeler en annen brukers sesjon slik at han kan ta over en pågående dialog. Metodene som beskrives er Cross-Site Scripting og Web-trojanere. Det er ikke enkelt å skrive en applikasjon slik at den hindrer slike angrep, men det beskrives mulige løsninger.

Siste del av boken beskriver "hemmeligheter". Det gis en oversikt over sertifikater og kryptering. Og hvordan man skal beskytte sine passord. Og hvordan en applikasjon skal beskytte brukerens passord. Det er jo ikke så mye vits å legge masse arbeid i å lage gode passord hvis en applikasjon er slepphendt med å passe på dem.

Dette er en veldig god bok! Den er godt skrevet og den er virkelig en vekker for både programmerere og brukere av web-applikasjoner. Jeg har også hatt gleden av å høre foredrag om disse emnene av Sverre Huseby.

Kan kjøpes på play.com.

Play.com sier:
This book is much more than a wake-up call. It is also an eye-opener. Even for those who are already awake to the problems of Web server security, it is a serious guide for what to do and what not to do, with many well-chosen examples. The set of fundamental rules is highly relevant. Peter G. Neumann, Author of Computer-Related Risks,and moderator of the Internet Risks Forum (risks.org).
This concise and practical book will show where code vulnerabilities lie and how best to fix them. Its value is in showing where code may be exploited to gain access to - or break - systems, but without delving into specific architectures, programming or scripting languages or applications. It provides illustrations with real code. Innocent Code is an entertaining read showing how to change your mindset from website construction to website destruction so as to avoid writing dangerous code. Abundant examples from susceptible sites will bring the material alive and help you to guard against:; SQL Injection, shell command injection and other attacks based on mishandling meta-characters; bad input; cross-site scripting; attackers who trick users into performing actions.



Terningkast 5

No comments: