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

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

Lektion 5 HTML, CSS, PHP och MySQL

Avancerade Webbteknologier

Modul 6 Webbsäkerhet

Föreläsning 6 Databaser och säkerhet

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

Nya webbservern Dvwebb.mah.se

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

Webbservrar, severskript & webbproduktion

JobOffice SQL databas på server

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

Webbprogrammering. Sahand Sadjadee

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

Storegate Pro Backup. Innehåll

Tentamen etjänster och webbprogrammering

Hemsideutveckling för Anjool AB

Karlstads Universitet, Datavetenskap 1

Modul 8 Hantering av indata

Dokumentation för VLDIT AB. Online classroom

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

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

WP-Edit. Robin Larsson Martin Davik. Examensarbete, grundnivå, 15 hp Datavetenskap Internetteknologprogrammet

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

Uppdateringsguide v6.1

Webbprogrammering - 725G54 PHP. Foreläsning II

PHP. PHP: Hypertext Preprocessor

Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie Justering för krav på Windows Server

Installera din WordPress med 9 enkla steg

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Programbeskrivning. Chaos på Web. Version

Statistik från webbplatser

Skapa din egen MediaWiki

Uppdatera Easy Planning till SQL

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

Introduktion till datasäkerhet. Christian Ohlsson 1

Exemple på Tentauppgifter Webbprogrammering

Innehåll. Dokumentet gäller från och med version

Webbaserade informationssystem med PHP och databaser

IP-baserade program. Telnet

Microsoft Internet Information Services 7 / 7.5

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

OBS! Det är av största vikt att innan konfiguration av modulen, genomfört de inställningar som presenteras med bilagorna till denna manual.

Om integritet och sekretess på nätet. Stefan Ternvald, SeniorNet Lidingö,

Telia Centrex IP Administratörswebb. Handbok

Swedish Association for Software Testing Inspect it AB

Manual licenserver. Installations och konfigurations-manual för Adtollo licenserver

Webbaserade informationssystem med PHP och databaser

PHP. Dynamiska webbsidor

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

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

Överföring av filer med Zendto v 1.1. stora filer som inte kan skickas via e-post konfidentiella uppgifter som inte kan skickas via okrypterad e-post

LEX INSTRUKTION REPLIKERING UPPGRADERING

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

Innehåll Security. Chapter 4 och 7 Beginning SQL Server 2008 for Developers

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

Ladda upp filer fra n PLC till PC

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

3. Dynamiska webbplatser, 20 Yhp (4 v)

PHP. TNMK30 - Elektronisk publicering

Vision WEB Komma igång med Electrolux Webbokning Windows Server 2012 R2 8/31/2017

Vitec Connect. Teknisk beskrivning REVIDERAT SENAST: VITEC. VITEC Affärsområde Mäklare

Innehåll. MySQL Grundkurs

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

Utveckling av en enkel basmodell för en webbplats

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

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

LEX INSTRUKTION LEX LDAP

Statistiska centralbyrån

Projekt Foreläsning VI

Tentamen etjänster och webbprogrammering

Introduktion HTML och PHP 732G16 Databaser design och programmering

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

Uppstart Agda PS Hosting

2 Varför är XSS och SQL-injection så vanligt?

Säkerhet, eller nått. Tomas Forsman

Modern webbutveckling. av Robert Welin-Berger

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

Game of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.

10 TIPS FÖR ATT SÄKRA DIN HEMSIDA. Hur du gör för skydda dig mot att din hemsida ska hackas.

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

Användarhandledning Version 1.2

KAP 18 SQL SERVER AGENT

Administrationsmanual ImageBank 2

Statistiska centralbyrån

Webbprogrammering 725G54

Trafla databasen vi hämtar data från (remote export) ligger på en godtycklig maskin i nätverket. Den här databasen är en MIMER databas.

ARX på Windows Vista, Windows 7 eller Windows 2008 server

Introduktion till användning av linux-servern sledge och några övningsuppgifter

emopluppen Installationsmanual

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

WCMS-15, Webbutvecklare CMS

OBS! Figuren visar inte alla aspekter och objekt som är inblandade i säkerhetssystemet.

Introduktion till Jasmine 1.2 ODQL

Extern åtkomst Manual för leverantör

Compose Connect. Hosted Exchange

Vid problem med programmet kontakta alltid C/W Cadware AB på telefon

TNMK30 - Elektronisk publicering

Cookies på Audiovideo.se

Nyheter i. Solen Administration 6.6

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Transkript:

PHP Säkerhet & Optimering tobias.landen@chas.se se

Att läsa om ämnet Bra och kortfattad tt dbok: Essential Php Security Författare: Shiflett, Chris Antal sidor: 124 Förlag: O'Reilly ISBN 10: 059600656X http://phpsecurity.org/ http://phpsec http://phpsec.org/ The PHP Security Consortium

Learning PHP & MySQL I kursboken Learning PHP & MySQL kan du även läsa kapitel 15 för att få lite grundläggande insikt i hur man jobbar med säkerhet i PHP.

Grundläggande inställningar i PHP Register Globals Ska vara avstängt Error Reporting Ska vara avstängt Skapa gärna en egen error hanterare som lagrar fel i till exempel en DB

Grundläggande utvecklingsregler g

Regel 1: Defense in Depth Bygg så många lager av säkerhet som möjligt. Ha två fallskärmar med dig när du hoppar. Eller kanske k tre

Regel 2: Least Privilege Så lite rättigheter som möjligt till varje roll i systemet

Regel 3: Simple Is Beautiful Complication i breeds mistakes, and mistakes can create security vulnerabilities. Komplex kod: $search = (isset($_get['search'])? $_GET['search'] : ''); Mindre komplex kod: $search = ''; if (isset($_get['search'])) { $search = $_GET['search']; }

Regel 4: Minimize Exposure Visa inte känslig data i klartext Till exempel skriva ut password efter en registrering Skicka inte känslig data i klartext SSL

Utövande

Balance Risk and Usability Hög säkerhet medför oftast sämre användarvänlighet

Track Data Håll koll kllpå var data kommer ifrån och vart du skickar den $_POST $_GET $_SESSION $_COOKIE Echo mysql_query() med mera

Filter Input Identifiera inputen Filtrera inputen Holl koll på vilken data du filtrerat och inte

Escape Output Identifiera output Escaping output Hålla koll på escaped och unescaped data

De stora bitarna i PHP säkerhet Forms & URL Databaser & SQL SESSIONS och COOKIES Includes Jobba mot filsystemet (filer och kommandon) Authentication & Authorization Delad hosting Använda färdig kod

Forms & URL Tänk på användande av GET och POST GET sparas i historiken Båda kan infekteras

File Uploads Akta för körara filer/script Risk att fel fil flyttas runt på disken Verifiera först att det är en uppladdad fil Kontrollera att filen flyttas till rätt ställe

Cross Site Scripting Om användarens inmatde text skrivs ut direkt på skärmen kan de skicka med farlig javascriptkod Cross Site Request Forgeries Skicka data till en website utanför samma domän Till exempel <img src="http://store.example.org/buy.php?item= e org/b php?item pencil&quantity=50" />

Tänk på att användaren alltid kan skicka en GET, POST eller annan HTTP data som han/hon vill. Det betyder att även om du inte har ett vist val i ditt formulär kan användaren mata in det

Databaser och SQL SQL Injections Om data som användaren matat in stoppas rakt in i en SQL fråga man användaren ändra logiken och komma åt känslig data: $sql = SELECT count(*) () FROM users WHERE username = '{$_POST['username']}' AND password = '{$_POST[ password']}' "; $ l $sql = SELECT * FROM users WHERE username = 'myuser' or 'foo' = 'foo' ANDpassword = mypassword "; Lös detta med mysql_real_escape_string()

Känslig data i databasen är inte bra Kryptera att data som är känslig utifall någon skulle komma åt databasen eller få tag i en backup

SESSIONS & COOKIES Tänk på att SESSIONS och COOKIES kan bli stulna av en annan användare K dik ill l k l Kan undvikas genom att till exempel koppla en SESSION till ett IP nummer eller en specifik browser version eller kanske båda.

Includes Skilj på include() och require() Namnge inte include filer med annan filändelse l än.php Se till att undvika dynamiska/variabla filnamn i en include

Jobba mot filsystemet (filer och kommandon) Var försiktig med användar inmatade sökvägar. Tänk på att man kan mata in../ som tar en upp en nivå. Tänk på att man kan mata in externa sökvägar till andra servrar Om man kör kommandon mot servern via PHP ska man vara extra försiktig. Kontrollera vilket kommando som kommer köras

Authentication & Authorization Brute force attacks Användaren kan försöka skicka randomiserade inloggningar mot webbtjänsten. Logga hur många felaktiga försök som gjorts och blocka efter ett par stycken.

Password sniffing All POST data skickas i klartext även om man tar <input type= password /> Skicka data över SSL (https) för att få en krypterad överföring.

Persistent Logins Funktion för att komma ihåg en användare så att man slipper logga in varje gång Bör undvikas eftersom det blir enklare för en hacker att sno en användares login

Delad hosting Exposed Source Code Som det är på jedu.se just nu Om till exempel MySQL lösenord lagras i en fil i stil med db.php kan en annan användare komma åt lösenordet. Om man kan bör dessa läggas i environment variables Om man kan bör dessa läggas i environment variables som läses in av webbservern

Exposed Session Data SESSIONS lagras i /tmp som är en mapp som alla användare på en server kan komma åt En hacker kan även i teorin byta ut data i en specifik session så at de till exempel får större rättigheter En bättre lösning är att lägga SESSIONS i databasen Man kan bygga en egen session handler

Filsystemet På många webbservrar så kan man navigera runt fritt i filstrukturen De flesta bra webbhotellen stänger in varje användare

Använda färdig kod Kontrollera alltid kd kod ni inte själva byggt Om ni inte har möjlighet att läsa igenom hela koden gå igenom resurser på nätet och se vad folk tycker Tänk på att det alltid kan finnas hål håll utkik efter nya versioner av koden och uppdatera Sänk aldrig säkerheten i er egen kod för att få annan kod att fungera Tänk på att detta även gäller för APIer och Web Services

Optimering av PHP

Benchmarking Mät vad som är mest effektivt Som att starta och stoppa ett tidtagarur Sen är det bara att hitta den effektivaste lösningen $benchmark[ start ] = microtime() Kod som ska mätas $benchmark[ end ] = microtime() Tidsåtgång = $benchmark[ start ] $benchmark[ end ]

Olika problemområden

Variabler Deklarera inte variabler i onödan Det kan allokera onödigt mycket minne

echo Kör en echo itälltfö istället för många Bra exempel: echo ; <div> $name </div> Dåligt exempel: echo <div> ; echo $name; echo </div> ;

Loopar Kolla igenom alla loopar i er kod och se till att: De inte kör för många varv i onödan Inte två loopar gör samma sak två gånger Ex: stoppar in allt i en array och sedan matar ut det igen

Databaskopplingar Låt databasen göra så mycket jobb som möjligt jg Men ställ frågor till den så sällan som möjligt Ta bara ut just den data du behöver l d h l b kl d Limitera antal rader och välj bara kolumner du behöver i PHP koden

Includes Inkludera bara kod, funktioner och klasser som du kommer använda under körningen

Funktioner Använd funktioner för att återbruka kod

Obejktorientering Överväg om det lönar sig Framförallt i mindre projekt

Spara på förfrågningar Gör så mycket som möjligt i frontend (JavaScript) Spara genererade sidor som HTML filer om det går Spara dtb databasanrop i PHP om dt det går

Allt handlar om avvägningar