Modul 8 Hantering av indata

Relevanta dokument
Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

JAVASCRIPT. Beteende

Om include-filer i PHP

729G28. Webbprogrammering och databaser. Introduktion till webbutveckling med PHP. Jakob Pogulis Institutionen för Datavetenskap (IDA)

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Introduktion till PHP

Modul 6 Webbsäkerhet

Ajax TruClient. Erfarenheter, tips och trix från Swedbank IT. Christian Gerdes Performance Engineer, LIGHTS IN LINE AB

Handledning för redigering av lagsidor.

Programbeskrivning. Chaos på Web. Version

Handledning. Procapita Vård och Omsorg Certifikatinstallation avseende LEFI Online Version

E-post på ett säkrare sätt

Webbprogrammering. Sahand Sadjadee

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Lära känna skrivbordet

Introduk+on +ll programmering i JavaScript

2. Komma igång Skapa grupper och elever Skriv också ut sidan 13 så att eleverna har en snabbguide till programmet.

Piff och Puffs Chatsystem

1 Översikt. 1.1 Koncept 1 (19) Tomas Rook Dokument typ Rev. Manual

Lathund. Fakturering via fil i Tandvårdsfönster

för att uppdatera dina produkter dagligen på LeGuide.com Groups webbplatser

Slutrapport för JMDB.COM. Johan Wibjer

Övningar Dag 2 En första klass

Labora&on 8 Formulär övningar/uppgi6er

Så här gör du för att lägga till nytt e-postkonto i Windows 8. Öppna E-post från startskärmen.

Widgets i DynaMaster 5 Golf

Essential Php Security Författare: Shiflett, Chris Antal sidor: 124 Förlag: O'Reilly

INFORMATION FRÅN VITEC. Nyhetsbrev Vitec Marknad/Webbplats/Kundservice

ANVÄNDARVILLKOR ANTIQNET

Att använda laget.se

GRUNDEN STRUKTURELLA DEFINITIONER FORMELLA DEKORATIONER. Dokumenttyp <HTML></HTML> (start och slut på fil)

Smartair System. TS1000 Version 4.23

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

Webbsidor och webbservrar

ANVÄNDARMANUAL ANSLUTA TILL REGION HALLAND VIA CITRIX

Ändra, kopiera eller radera publikation (staff)

Fiery Driver Configurator

Föreläsning 4 Serverskript PHP Validering av data med serverskript Formulär

Manual för Typo3 version 4.04

Inledning. Att bli medlem

SÅindex 5 i Microsoft Excel 2010

Slutrapport YUNSIT.se Portfolio/blogg

Så här använder du P-touch Transfer Manager

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

ZACI är den programvara som är navet i kommunikationen när det gäller kortbetalningar.

Slutrapport Get it going contracts

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

en översikt Användarkonton i Windows-familjen Användarkonton i Windows NT Workstation och Windows NT Server

Vis it. jquery jquery används lite överallt i appen på olika sätt. Det främsta användningsområdet är vid selektering och manipulering av HTML element.

Manual för studerande Version 2.2.0

Manual Invånaradministratör

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

19. Skriva ut statistik

Elektronisk publicering TNMK30

1 Nyheter i Filr 2.0 Desktop-programmet

Webbprogrammering - 725G54 PHP. Foreläsning II

Bruksanvisning för hjälpbegäran

Dynamisk HTML JavaScript och webbläsarens objektmodell

INSTALLATION AV VITEC MÄKLARSYSTEM. Studentversion

F8 Webbteknologier 1. Dynamiska webbsidor

Att använda pekare i. C-kod

I detta dokument finns beskrivet hur en nyinstallation av Tidbok skall göras.

Växel

HexaFlip. Kravspecifikation

Elektroniskt informationsutbyte mellan arbetsgivare och Försäkringskassan. Information om filöverföring

1 Skapa Tabell Skapa Relationer Redigera Relationer Redigera Fält i Tabell Lägga till Poster i Tabell...

Att bygga enkla webbsidor

Innehåll. Förändringar i v5.2

Finansinspektionen P.O. Box 7821 SE Stockholm [Brunnsgatan 3] Tel Fax finansinspektionen@fi.se

Bloggen har tre sidtyper

Services + REST och OAuth

Installation/Flytt av Rebus

ALEPH ver. 18 Sökning i webbkatalogen

E13 "Behind the Wild"

Styra olika typer av objekt som animering, video, ljud och Flashfilm

Frågor och svar om TNC-term

Allmänna anvisningar: Skriv dina svar på svarsblanketten (se nästa sida) Markera och ange alla svar tydligt och entydigt efter instruktionerna.

Övningar i JavaScript del 2

Installationsguide. För att installera mjukvara och hårdvara, följ nedanstående anvisningar.

TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap

E13 Behind the Wild. Dagens agenda. Cookies Context/ändra context Augmentation (förstärkning) Klassiskt arv Att låna metoder Namespaces Postludium

Författare Version Datum. Visi System AB

2D1395 Datasäkerhet Lösningar till tentamen

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

Instruktioner för användning av Accessapplikationen till uppföljning av skyddsvärda arter kärlväxter samt AnnexIIkärlväxter

Besiktning Att göra lista Sortering Periodval Besiktningsbokning Detaljer Hyresgästinfo Lägenhetsstatus...


TERSUS SKOLSYSTEM AB. Ansökan. Barnomsorgen

HTML. Introduktion till HyperText Markup Language

7 Mamut Client Manager

Virus och andra elakartade program

Tips och tricks 1 Cadcorp SIS

Upsättning av Shoutcast-sändning

Info till IT - dioevidence Nationell uppföljning inom sociala områden

Novell Vibe Add-In 1.0.1

Namn: (Ifylles av student) Personnummer: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

ASP.NET MVC. Copyright Mahmud Al Hakim Innehåll

E11 "Protection" Föreläsning 11, HT2014 Säkerhet, tillgänglighet. Johan Leitet. Kurs: 1dv403 Webbteknik I

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

Transkript:

Modul 8 Hantering av indata

Indata De flesta webbplatser idag tillåter användare att mata in data Utan denna möjlighet hade inte webben varit vad den är idag Tyvärr innebär detta stora säkerhetsrisker Klientdatorn bestämmer vad som händer härnäst i programmet För att klienten inte skall göra felaktiga val behövs kontroller 2

Buggar i hanteringen av indata Kan hjälpa en attackerare att ta sig förbi säkerhetsspärrar Kan ge access till viktiga resurser på servern Kan möjliggöra att felaktig data kan matas in 3

Hantering av indata Vad handlar indata om Att validera indata Hantera felaktig input Autoriseringsproblem Skydda indata på serversidan 4

Editera HTML-filer HTML-kod ägs av klienten, som har full kontroll över den. Editera genom att: 1. Spara webbsidan som en HTML-fil 2. Öppna filen I en texteditor 3. Gör ändringarna du önskar 4. Om action -attributet är relativt; ändra det till full URL 5. Spara filen lokalt 6. Öppna filen i webbläsaren och klicka Submit Se Exempel 1 5

Vad handlar indata om Två olika typer av indata från klienten Användargenererad indata Webbläsaren låter användaren diktera värden Server-genererad indata De verkliga värdena göms i HTML eller i HTTP Användaren skall inte modifiera dessa värden 6

Användargenererad indata <input type="text" name="username"/> <input type="password" name="password"/> <textarea name="address" cols="80" rows="5"> </textarea> 7

Server-genererad indata Parametrar i URL <a href="http://someplace.example/edit.jsp?id=1213"></a> Select-listor <select name="country"> <option value="dk">denmark</option> <option value="se">sweden</option> </select> Check-boxar <input type="radio" name="gender" value="female"/> Female Gömda fält <input type="hidden" name="userid" value="194423"/> HTTP Headers Cookie: CustId=3758936 8

Att lita på användaren Många webbprogrammerare inser inte att: Användaren har full kontroll över sin dator Han kan undersöka och modifiera allt som webbläsaren kan se hidden -fält i formulär Cookies Javascript-kod, även om den ligger i separat fil Modifiering av data är inte ens svårt! Data sänds ofta fram och tillbaka mellan klient och server Det finns ingen client-side security! 9

Titta på denna URL: Variabler i URL http://www.somewhere.example/index.php?foo=1&bar=hello.två variabler skapas $foo med värde 1 $bar med värde Hello I denna kod: if (hasrole($userid, ROLE_ADMINISTRATOR)) $isadmin = 1; if ($isadmin) { # do some stuff requiring admin privileges. } Vad händer med URL: http://www.somewhere.example/adminstuff.php?isadmin=1

Validering av indata Identifiera och validera all indata Kontrollera format och gränsvärden Kontrollera längden Kontrollera eventuella null-bytes Skapa valideringsfunktioner för detta Gör validering för allt som utförs Gör autentiseringsprov samtidigt som kontroll av indata 11

Hantering av felaktig indata Felaktig användargenererad indata Visa upp formuläret igen med ett felmeddelande Felaktig servergenererad indata Tecken på förfalskning Visa kort felmeddelande och notera i loggen Felaktig indata. Incidenten har loggats Gör inte: Validera indata på klienten (Javascript) Ändra indata så att den blir giltig 12

Whitelist och blacklist När man filtrerar data tittar man på tecken eller teckenkombinationer för att ta bort eller ändra dem Filtrering kan göras på två sätt Identifiera det dumma och ta bort det Identifiera det snälla och ta bort resten Första valet är det intuitiva, det andra är det rätta

Authentiseringproblem Authentisering: Att hantera någon access till våra tillgångar Servergenererad indata hanterar väldigt ofta olika tillgångar Modifierad indata kan ge någon access som inte skulle haft det 14

Buggar i authentiseringskod Typiskt HTML-formulär för en online-bank <form action="show-account.asp" method="get"> Account to display: <select name="account"> <option value="1234.56.78901">1234.56.78901</option> <option value="1234.65.43210">1234.65.43210</option> </select> <input type="submit" name="show" value="show Account"/> </form> Förväntar sig ett av de två giltiga kontonummren tillbaka Aug 2000: En norsk tonåring får tillgång till andras konton genom att manipulera indata 15

Skydda servergenererad input Flera sätt att göra detta Skicka inte data till klienten Många gånger kan data lagras på servern Validera formulär och gör autentiseringsprov Använd indirekt åtkomst till data 16

Indirekt åtkomst till data Använd labels istället för riktig data <option value="1">1234.56.78901</option> <option value="2">1234.65.43210</option> Arrayen i exemplet mappade till ett verkligt objekt, men samma namn som objektet Genom att ändra detta till en label kan denna form av attack inte göras 17

Sammanfattning Det finns många sätt att använda sig av för att säkerställa indata Identifiera alla tänkbara källor till indata Inse att allt kan modifieras på klienten Inse att data passerar den osynliga säkerhetsbarriären Fler valideringstest kan behövas Lägg så mycket data på server som möjligt Där är den skyddad 18