Webbsäkerhet för IT-tekniker VT2014 Johan Leitet Nätverkssäkerhet, 1DV425 johan.leitet.se twitter.com/leitet facebook.

Relevanta dokument
Säkerhet. Säkerhet. Johan Leitet twitter.com/leitet facebook.com/leitet. Webbteknik II, 1DV449

Webbsäkerhet. för IT-tekniker VT2013. Johan Leitet johan.leitet.se

Säkerhet. Föreläsning 6 Säkerhet. Johan Leitet twitter.com/leitet facebook.com/leitet. Webbteknik II, 1DV449

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

Säkerhet i applikationslagret och slaget om webben. John Wilander, Omegapoint, Rätt säkerhet, maj 2010

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

Avancerade Webbteknologier 2. AD11g Göteborg 2012 Säkerhet

Modul 6 Webbsäkerhet

Webbprogrammering - 725G54 PHP. Foreläsning II

Webbprogrammering. Sahand Sadjadee

OWASP Topp De 10 allvarligaste riskerna i webbapplikationer OWASP East Sweden: Uppstartsmöte

"HTML5 och relaterade API:er"

Swedish Association for Software Testing Inspect it AB

Webmail instruktioner

Instruktion för integration mot CAS

Säkerhet. Säker kommunikation - Nivå. Secure . Alice wants to send secret message, m, to Bob.

Webbsäkerhet och vanliga brister - kunskapsläget bland utvecklare.

Krypteringteknologier. Sidorna ( ) i boken

Kryptering. Krypteringsmetoder

MVC med Javascript och Ajax. Filip Ekberg

Identity Management i ett nätverkssäkerhetsperspektiv. Martin Fredriksson

Säkra webbapplikationer. John Wilander, Omegapoint, KTH maj 2010

Distansåtkomst via webaccess

Cipher Suites. Rekommendationer om transportkryptering i e-tjänster

Webbservrar, severskript & webbproduktion

API:er/Mashup. Föreläsning 4 API:er och Mashups. Johan Leitet johan.leitet@lnu.se twitter.com/leitet facebook.com/leitet. Webbteknik II, 1DV449

Tentamen etjänster och webbprogrammering

WordPress och säkerhet inom tillägg från tredje parter

Introduktion till datasäkerhet. Christian Ohlsson 1

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

Webbtjänster med API er

Introduktion till protokoll för nätverkssäkerhet

Många företag och myndigheter sköter sina betalningar till Plusoch

Registrering i EU login

Åtkomst till Landstingets nät via Internet

Uppstart Agda PS Hosting

Lagring i molnet. Per Hellqvist Senior Security Specialist Symantec Nordic AB

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

SNITS-Lunch. Säkerhet & webb

Dokumentation för VLDIT AB. Online classroom

Riktlinjer för informationssäkerhet

Uppstart. Agda Drift

Ekonomiportalen Sa kommer du iga ng

Kapitel 10, 11 o 12: Nätdrift, Säkerhet. Publika telenätet. Informationsöverföring. Jens A Andersson. Telenäten är digitala.

Projektuppgift- Mashup- Applikation

Lösenordsregelverk för Karolinska Institutet

F5 Exchange Elektronikcentrum i Svängsta Utbildning AB

Instruktioner för att skapa konton i MV-login

JavaScript in SharePoint and not just for Apps. Wictor Wilén

ANVÄNDARMANUAL HUR INSTALLERAR JAG MOBILEPASS PÅ MIN TELEFON ELLER DATOR

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Asp.net mvc intro PER KVARNBRINK,

Att bygga VPN. Agenda. Kenneth Löfstrand, IP-Solutions AB. Olika VPN scenarios. IPsec LAN - LAN. IPsec host - host SSH

Extern åtkomst Manual för leverantör

Guide för fjärråtkomst av Gigamedia IP-kamerakit

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS & jquery. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

SSL/TLS-protokollet och

Webbprogrammering, grundkurs 725G54

Laboration 3 i kursen Produktion för tryckta medier och webb: Webbplatsproduktion med ett publiceringssystem

Hemsideutveckling för Anjool AB

INLOGGNING 1 (6) Det finns två sätt att logga in i Privera: Med engångslösenord till mobiltelefon Med engångslösenord till e-post

Kom igång med Windows Phone

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

PHP. PHP: Hypertext Preprocessor

Föreläsning 6 Databaser och säkerhet

För att öppna galleriet, ange adressen

En lösenordsfri värld utopi eller verklighet

JAVASCRIPT. Beteende

Modul 8 Hantering av indata

Att använda kryptering. Nyckelhantering och protokoll som bygger på kryptering

Kapitel 10 , 11 o 12: Nätdrift, Säkerhet

Försöksnomineringssystem 2013

Krav på webbläsare. Manual för arbetslöshetkassorna. De webbläsare som är kompatibla med portalen är minst Internet Explorer 6.x och Firefox 2.

Practical WLAN Security

Abstract. 1. Inledning

Elektronisk publicering TNMK30

Användarmanual för Pagero Kryptering

Skapa e-postkonto för Gmail

2D1395 Datasäkerhet Lösningar till tentamen

Åtkomst till Landstingets nät via Internet

ANVÄNDARMANUAL HUR INSTALLERAR JAG MOBILEPASS PÅ MIN TELEFON ELLER DATOR

Föreläsningens innehåll. Säker kommunikation - Nivå. IPSec. IPSec - VPN. IPSec - Implementation. IPSec - Består av vad?

SSL. Kristoffer Silverhav Robin Silverhav

Viktigt angående Kund- och Förskrivarportalen

E12 "Evil is going on"

SÄKERHET KUNSKAPER OM SÄKERHET OCH FÖRMÅGA ATT IDENTIFIERA OCH MOTARBETA ATTACKER

Fr om version använder vi HogiaID en ny inloggning för dig som använder Hogia einvoice eller Hogia Approval Compact Edition

Innehållsförteckning:

Uppdatera Easy Planning till SQL

Konfigurationer Video- och distansmöte Bilaga till Tekniska anvisningar

Försättsblad till skriftlig tentamen vid Linköpings Universitet

teknisk manual Direktbetalning handelsbanken.se/e-handel

INTERNET-BASERAT GRÄNSSNITT FÖR DATABASHANTERING I ETT PORTALSYSTEM

Projekt Foreläsning VI

Säkerhetsanalys av plugin-kod till publiceringsplattformen WordPress

Användarhandledning. Man trycker på Visa certifikat

Kryptering HEMLIG SKRIFT SUBSTITUTION STEGANOGRAFI KRYPTOGRAFI

JavaScript. DOM Scripting

Problem som kan uppkomma vid registrering av ansökan

Transkript:

Webbsäkerhet för IT-tekniker VT2014 Nätverkssäkerhet, 1DV425 Johan Leitet johan.leitet@lnu.se johan.leitet.se twitter.com/leitet facebook.com/leitet

Webbsäkerhet Dagens agenda Webbsäkerhet Klientsida - Cookies - Session hijacking - XSS, CSRF - Validering - Privacy Serversida - HTTPS - Egen autentisiering - Lösenordshantering - OpenID, OAuth

OWASP Top 10 A1 Injection A2 Broken Authentication and Session Management A3 Cross-Site Scripting (XSS) A4 Insecure Direct Object References A5 Security Misconfiguration A6 Sensitive Data Exposure A7 Missing Function Level Access Control A8 Cross-Site Request Forgery (CSRF) A9 Using Components with Known Vulnerabilities A10 Unvalidated Redirects and Forwards https://www.owasp.org/index.php/owasp_top_ten_project

Skriven kod som talar om för webbläsaren vad den ska göra. Idag: Uteslutande JavaScript Hade förr ryktet om sig att vara enkelt och inte ett riktigt programmeringsspråk Ljud/Video-kontroll Klientsideskript Dynamiskt förändra en webbsida Information om klienten Drag and Drop Reagera på händelser AJAX Lagra data lokalt på klienten Geolocation Canvas Kontrollera data innan den skickas till servern

1) Koden är publik Eventuella problem 2) Utvecklare som förlitar sig på klientsidans kod - Vid validering - Vid inloggningsförfarande - För att stoppa användaren från att genomföra handlingar 3) Ajax-applikationer ökar angreppsytan 4) Nya API:er/ökad komplexitet ökar angreppsytan (HTML5) 5) Luckor i webbläsarimplementationen 6) Denial-of-Service-problem (DOS-attack) 7) Cross-site Scripting (XSS) 8) Cross-Site Request Forgery (CSRF)

Lagen om elektronisk kommunikation Cookies

Sessioner

Session hijacking

Validering Validate input, filter output!

Validera in- och utdata Black listing-filter: Undvik att ersätta farliga tecken. Det finns alltid vägar runt detta. /^[^ ]$/ White listing-filter: Tala explicit om vilka tecken som får anges. Mycket bättre /^[0-9A-ZÅÄÖa-zåäö_]$/ Vad du gör på klienten spelar ingen roll. All säkerhet måste läggas på servern! Kom ihåg detta till nästa kurs...

Injection

XSS XSS går i korthet ut på att en attackerare får sin JavaScript-kod att komma ifrån samma server som originalkoden så att Same site origin sätts ur spel

XSS-attacker

Exempel 1) Skjut in skadlig kod. 2) Arvid går in på sidan Forum med inloggning 3) Arvid klickar på attackerarens länk [Hackerns sida]

Samy is my hero <div id=mycode style="background: url('java script:eval(document.all.mycode.expr)')" expr="var B=String.fromCharCode(34);var A=String.fromCharCode(39);function g(){var C;try{var D=document.body.createTextRange();C=D.htmlText}catch(e){}if(C) {return C}else

Cross-Site Request Forgery (CSRF)

CSRF Få användaren att göra något på en annan site utan att veta om det. Ändra admininställningar på sin blogg Inloggad mot din router? Boka resor Påverka e-handlares Rekommenderat för dig Påverka sökhistoriken.

Klient- servervalidering KLIENT SERVER skicka Behandla data Ett klientskript validerar FEL! OK OK Servern validerar

Privacy https://panopticlick.eff.org

Phishing

Serverattacker

Internet

HTTPS :80 Hallå Kalle! Läget???? :443 % SD 236! 3&"#4 6 " Hela HTTPmeddelandet krypteras

Symmetrisk kryptering "Ett hemligt meddelande" Kryptering Sessionsnyckel "SF%&## fgd)(=09643774" Dekryptering Sessionsnyckel "Ett hemligt meddelande"

Asymmetrisk kryptering "Ett hemligt meddelande" Kryptering Publik nyckel "LK/%ds135/&#12 GNBGD" Dekryptering Privat nyckel "Ett hemligt meddelande"

Anrop, https, :443, random:# %RFDG HTTPS, flöde Certifikat med publik nyckel, random: # TFX1 Sessionsnyckel krypterad med publik nyckel Meddelande krypterat med sessionsnyckel Meddelande krypterat med sessionsnyckel...

HTTPS

Egen autentisiering? 1) Behöver du ha egen inloggning? Räcker det kanske med Facebook, Google, Twitter? Om du måste ha inloggning: 1) Tala om för användaren hur uppgifterna hanteras! 2) Tvinga inte användaren att utforma lösenordet på ett speciellt sätt, men informera gärna om vikten av ett starkt lösenord. (Man kan tänka sig minsta längd, typ 6 tecken.) 3) Tillåt specialtecken och lååååånga lösenord. 4) Var noggrann vid implementationen. Ditt lösenord

Lösenordshantering Om olyckan mot förmodan är framme. Ha ryggen fri. Se till att bara spara hashade lösenord. Individuellt saltade. Spara aldrig användarens lösenord så att detta går att återge. Lösenordsfrågor??

Rainbow tables (ordböcker) Lösenord super123 996 hejsan 141 123456 118 Förekomst per 92084 111 hejhej 102 bajskorv 96 sommar 93 hemligt 69 blomma 60 bloggtoppen 60

Registrering Användaren registrerar lösenord (sommar) En slumpad salt skapas. Exempelvis: hj234klsd Hasha resultatet hj234klsdsommar Addera användarens lösenord till saltet. hj234klsdsommar 2d86c4246f3c0eb516628bf324d6b9a Spara hashen + saltet i databasen

Hur (inte) göra? Använd inte md5, sha1 eller sha256 för lösenordshantering!

Inloggning Användaren anger användarnamn och lösenord Slå upp salt som används för användaren Hasha resultatet Addera det lösenord användaren angav till saltet. Kontrollera om resultatet är samma som det som står i databasen

password_hash (PHP >= 5.5.0) $hash = password_hash("bananskal", PASSWORD_DEFAULT); $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a DB if (password_verify($password, $hash)) { // OK! } else { // Invalid } http://www.php.net/manual/en/faq.passwords.php

Gör världen lite säkrare " Kära webbplatsägare Nyligen registrerade jag ett konto på er tjänst. Det verkar dock inte bättre än att ni sparat mitt lösenord i klartext vilket gör att dessa uppgifter kan komma på vift om någon illasinnad hittar en säkerhetslucka i ert system. Att spara lösenord på detta sätt bryter i alla avseende mot god sed och det är definitivt något ni bör se över så fort som möjligt. Om du som läser detta mail inte har direkt insyn i hur systemet är utvecklat så vänligen vidarebefordra detta mail till de som har denna insyn. Vänliga hälsningar / Ellen Nu

Skydda dig själv Använd aldrig samma lösenord på mer än en sajt! Se över säkerheten på viktiga sajter så som Google, Facebook etc. Använd tvåfaktorautentiseringar.

Tvåfaktorverifiering Något man vet Något man har

Behövs lösenord? http://notes.xoxco.com/post/27999787765/is-it-time-for-password-less-login

OpenID

Google AuthSub Yahoo BBAuth Flickr API OAuth

SQL injecetions

SQL injections select * from users where username= INMATAT VÄRDE select * from users where username= ; drop table users; Hur undvika? 1) Använd inte inline-sql. Använd istället: Lagrade procedurer Parametriserade frågor 2) Om du måste använda inline-sql. Validera, validera, validera