PHP-nytt fra London, og frontend fokus på skjema



Like dokumenter
Trådløsnett med. Wireless network. MacOSX 10.5 Leopard. with MacOSX 10.5 Leopard

Feilmelding Årsak Løsning

Compello Fakturagodkjenning Versjon 10 Software as a service. Tilgang til ny modulen Regnskapsføring

Compello Fakturagodkjenning Versjon 10.5 As a Service. Tilgang til Compello Desktop - Regnskapsføring og Dokument import

Målrettede angrep. CIO forum 6.mars Tore Terjesen Head of MSS & SOCs - Nordics tore.terjesen@secode.com

Innholdsfortegnelse. 1. Testing Feiltesting av koden Funksjonstesting: Kilder.10

Hva skjer i Open Web Application Security Project (OWASP)?

Lotus Traveler - Manual for installasjon

Agenda. Data og grenser Kontekster XSS XSS og kompliserende kontekster Injection attacks Beskyttelse OWASP

Bestille trykk av doktoravhandling Ordering printing of PhD Thesis

User Input / Output Handling. Innocent Code kap 3-4 INF-329 Øystein Lervik Larsen oysteinl@ii.uib.no 7/11-05

SQL Server guide til e-lector

Pen- tes'ng av webservices. Asbjørn Reglund Thorsen Gruppe- og utviklingsleder UIO/FSAT

Erlend Oftedal. Risiko og sikkerhet i IKT-systemer, Tekna

Information search for the research protocol in IIC/IID

Kortversjon av brukerdokumentasjon Solman

DecisionMaker Frequent error codes (valid from version 7.x and up)

Tilkobling og Triggere

Oblig 5 Webutvikling. Av Thomas Gitlevaag

SmartPass Mini User Manual BBNORGE.NO

HTML5. Skjemaer på nettsider. Skjemaer med. Informasjonsteknologi 1 og 2. Gløer Olav Langslet Sandvika VGS

Hangman. Level. Introduksjon

- reklamebannere mobil og tablet

SAS FANS NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS 4. MARS 2014, MIKKEL SØRHEIM

Steg 1: Installasjon. Steg 2: Installasjon av programvare. ved nettverkstilkoblingen på baksiden av kameraet. Kameraet vil rotere og tilte automatisk.

Trådløst nett UiT Feilsøking. Wireless network UiT Problem solving

Hvordan føre reiseregninger i Unit4 Business World Forfatter:

OWASP Norway, 24.april Ståle Pettersen

Aleksander Thanem Bjøru Seniorkonsulent MCSE og Citrix CCIA

Bruk av Domenia Norges AS Webmail

E-learning opportunities for JSEC prototype 1

ORDBMS og OODBMS i praksis

Norsk (English below): Guide til anbefalt måte å printe gjennom plotter (Akropolis)

PERSONVERN, GDPR OG COREPUBLISH

BankID Norges planer for PSD2 TLP: GREEN. PSD2 workshop 30 mars Frode Beckmann Nilsen, Produktutviklingssjef

Trådløsnett med Windows XP. Wireless network with Windows XP

En bedre verden med AJAX

CMI. Brukermanual. Comendo Dronning Eufemias Gate 16 N-0191 Oslo T: F:

IT:PULS. Cloud Computing Fremtiden er her allerede. Praktiske erfaringer med etablering og leveranse av Cloudtjenester

Eksamen i Internetteknologi Fagkode: IVA1379

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

WordPress.com: Enkel bruksanvisning for blogging

Hurtigstart guide. Searchdaimon ES (Enterprise Server)

Testrapport Prosjekt nr Det Norske Veritas

Databaser kort intro. Tom Heine Nätt

EMPIC MEDICAL. Etterutdanningskurs flyleger 21. april Lars (Lasse) Holm Prosjektleder Telefon: E-post:

Start Here USB *CC * *CC * USB USB

Erfaringer som pen- tester. Asbjørn Thorsen

System integration testing. Forelesning Systems Testing UiB Høst 2011, Ina M. Espås,

Hva skjer i OWASP? OWASP. The OWASP Foundation. Kåre Presttun Chapter Lead Mnemonic as kaare@mnemonic.no

6105 Windows Server og datanett

Kom i gang med UiO-bruker og UiO-maskin

of color printers at university); helps in learning GIS.

BRUKERVEILEDNING FOR MC50.

Dataporten sikker og enkel deling av data i UH-sektoren

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

Planlegge og starte et møte. MeetAt Datamøte

Innføring i bruk av CGI4VB

Introduction to DK- CERT Vulnerability Database

Bruk av Outlook 2003 utenfor NHH sitt nettverk

Hva skjer i OWASP? OWASP. The OWASP Foundation. Kåre Presttun Chapter Lead mnemonic as kaare@mnemonic.no

Oppgave 1 (Opprett en database og en tabell)

Controller Brukerstøttedatabase Ottar Holstad/Cantor 09.

Publisering av statiske og dynamiske websider til klasserom.net fra Dreamweaver og MySQL

IN uke 1. Komme i gang med programmering

Trådløst nett UiT. Feilsøking. Wireless network UiT Problem solving

Innocent Code Kapittel 1: The Basics Kapittel 2: Passing Data to Subsystems

Huldt & Lillevik Ansattportal. Installere systemet

Installasjonen krever en Windows 2008 server innmeldt i domene.

MediaNorge. Mer åpent enn du tror...

INF2120 Tools at your fingertips

Sikkerhet og tilgangskontroll i RDBMS-er

SPSS Høgskolen i Innlandet

Velkommen til Pressis.

VELKOMMEN INN I DITT NYE TV-UNIVERS. Foto: Jens Haugen / ANTI

Om verktøyet. Installering av MySQL Migration Toolkit. Installer toolkitet. Brukerveiledning til Intelligent Converters MySQL Migration Toolkit

OnTheHub Brukerveiledning

Informasjon for nye brukere (for administratorer) Mars 2014, 3. utgave

HTML: Publiser nettsiden din. Publiser nettsiden din på Internett. Github. Brukernavn.github.io

Installasjonen krever en Windows 2003 server innmeldt i domene.

Innholdsfortegnelse... 1 Endringslogg UD BETALINGSTERMINAL NETS NEW DRIVERS FULL SUPPORT WINDOWS

Denne artikkelen er produsert for. Amatør Radio. "Bullen" og står trykt i sin helhet i utgave

Programmet er utviklet av

VEILEDER GI FJERNHJELP

Beskrivelse for hvordan en kan digitalisere og importere musikk inn i Variations på TEST server EINER.UIB.NO (for installasjonen 17.

A Study of Industrial, Component-Based Development, Ericsson

Norges ledende bedrift innen Linux og åpen programvare

Jara NetBusiness. Ny release 15. april 2013

Surface Forhandler DMP Registrering

EN PRAKTISK INNFØRING I KRYPTERT E-POST FRA UDI

"The great Aim of Education is not Knowledge but Action"

TDT4237 Programvaresikkerhet Exercise 2. Kristian Ekle Stian Hegerland Hagen Thomas Gautvedt Tale Prestmo Martin Rechsteiner Marthe Øynes

Database security. Kapittel 14 Building Secure Software. Inf329, Høst 2005 Isabel Maldonado

Fjernarbeidsløsningen - når du ikke bruker din vanlige Oslo kommune-pc

verktøyskrin Grafisk profil ved Norges teknisk-naturvitenskapelige universitet

CustomPublish.com. Brukere. Introduksjon til brukerhåndtering i CustomPublish

Vurdering av risiko og sikkerhet i skytjenester. Håvard Reknes

Hvordan publisere bilder i galleriet til Norsk lundehund klubb

Trådløsnett med Windows Vista. Wireless network with Windows Vista

Transkript:

KristiansandPHP PHP-nytt fra London, og frontend fokus på skjema Møte nr 1

PHP user groups

Norden: København, Helsinki og Kristiansand

Agenda 18:00 velkommen 18:15 PHP fokus 19:00 pizza! 19:15 frontend fokus 19:45 uformell mingling 20:00 ferdig

Kort om Morten Jobbet som webutvikler (frontend og fullstack) i 13 år Perl, Java, PHP, ASP og ASP.NET Jobbet for Ericsson, Logit-Systems, Current Software og Netlab Bakgrunn fra drift, support og opplæring Hobby-firma, getonweb i 12 år (av og til er det litt kjedelig på jobb )

Hvem er vi? Navn? Firma? Hva du lager? Hvor mange år har du programmert i? Hvilke andre språk har du jobbet med? IDE/editor?

http://phpconference.co.uk/ https://joind.in/event/view/3063 https://youtu.be/os1-plbmaku? list=pl_apvo2hegf_vdltpuf6ving LC7Raph0i PHP UK Conference 2015 Morten har vært på PHP UK Conference 2015 nettopp, og kom hjem til Norge med mange impulser og fantastiske opplevelser. 700 PHP-nerder samlet i 2 hele dager, foredragsholdere fra USA, Italia, Tyskland og England :-)

Alle andre Objekt orientert programmering, alt annet er latterlig GIT er selvsagt Composer er forventet API, det er kult og alle bruker det Community, dersom du ikke er en del av det, så går du glipp av mye!

Coderabbi`s råd for læring Mentor Lær av andre Det er mye læring i å lære til andre Kollega Code review (begge kan lære) Open source (viktig for egen læring) Rubber ducking (code review self) Pair coding / ekstrem programmering

Lornajane nytt i PHP Er du på eldre enn v5.5? Oppgrader! date.timezone må settes i v5.5 ellers kan det bli uforutsigbart Les E_STRICT loggen (nyttig til forbedring, spesielt ved oppgradering) Traits likner på klasser, men de er PHP snippets som blir "kopiert" inn Ny passord håndtering i PHP, salt og algoritme i passordet er sterkt anbefalt! password_hash() password_verify() Built-in OpCache, opensource fra Zend, men må enables ;-)

Jordi - Composer best practices Jordi og Adermann har lagd Composer Viktig med README.md Kommandoen "composer require " er enklere enn å hacke json-filen Bruk Packagist for å søke etter komponenter Vær bevist på hvilke versjoner du henter ned, spesialtegn hjelper med kontroll på dette: ^ ~ * er tegn som kan kombineres med versjonsnummer F.eks. ~2 vil gi alle updateringer av versjon, men ikke v3. Bra oppdatering/kontroll Og han anbefaler Monolog: Logs to files, sockets, inboxes, db, web services. Tips for optimalisering: -optimizer-autoload -prefer-dist

Javier, continuosly delivering git + github Jenkins Ansible Phing (tilsvarende Ant i Java...)

Rob Allan - API with Apigility (Zend) Bruk HTTP codes for alt det er verdt! Apigility provides the boring bits of API building: Content negotiation, versioning, validation, authentication, documentation Anbefaling: swagger.io og frisbyjs.com

HTTP Methods for RESTful Services PUT PATCH POST DELETE GET komplett replace enkelte endringer nye objekter sletting henting av data

Trust no one! Steps for input: 1. Filter fikser input. Eks: trim(); 2. Validering av filtrert data. Eks: epost sjekk, steng lengde HTTP codes for errors: 400: client error 422: partly wrong data Gi klare feilmeldinger

Versjon i URL eller i Accept?

Hypermedia in JSON (Collection)

Authentication HTTP Basic (htpassword) and Digest, for internal APIs OAuth2 (Facebook, Google ), for public APIs Correct errors: 401, 403, etc.

MVVM and Silex Halve salen bruker Silex (Symfony light...) Bower.io er tilsvarende Composer MVVM rammeverk: Angular (mest populært) Backbone (lang fartstid)

AngularJS fra Google er populær...

OWASP.org - top 10, av Gary Hockin Basert på omfang og alvorlighetsgrad, har OWASP kommet fram til de viktigste sårbarhetene. Listen revideres jevnlig.

10. UNVALIDATED REDIRECTS AND FORWARDS Alternative løsninger: Whitelist Bare interne lenker på forward

9. USING COMPONENTS WITH KNOWN VULNERABILITIES COMPOSER === EPIC COMPOSER === BAD Not just your dependencies, but the dependencies of the dependencies of the dependencies

8. CROSS-SITE REQUEST FORGERY (CSRF) Use only POST Require user interaction Don t use sticky logins for anything that important Use CSRF token Eks: neste gang du går inn på Amazone, så er det kanskje en ukjent bok i handlevognen din

7. MISSING FUNCTION LEVEL ACCESS CONTROL F.eks: delete, uten rettighets sjekk

6. SENSITIVE DATA EXPOSURE If you re loading your form over http you re already too late Password_hash Don t store sensitive data at all Listen to an expert @ircmaxell You re a developer, not a security expert Don t store naked pictures of yourself on a a cloud server you don t control" - Gary Hockin

5. SECURITY MISCONFIGURATION You re a developer, not a security expert You re a developer, the code is your problem

4. INSECURE DIRECT OBJECT REFERENCES F.eks hacke url og få tilgang til noe du ikke burde

3. CROSS-SITE SCRIPTING (XSS) Escape all user input all the time Whitelist allowable characters rather than blacklisting bad characters Good escaping libraries are out there

2. BROKEN AUTHENTICATION AND SESSION MANAGEMENT Session.Use_only_cookies Session regeneration Password confirmation, inni applikasjonen for ekstra sikkerhet på enkelte elementer Secure sessions: $_SESSION[ ipadr ] = $ipadr; if ($ipadr!== $_SESSION[ ipadr ]) session_destroy();

1. INJECTION Filter all the tings all the time! news.php?news_id=;drop TABLE news;

Enda et injection eksempel login.php?user=m.moss&password=1 %20OR%201=1;

PHP har innebygd filter funksjon $username = filter_var($_get[ username ], FILTER_SANITIZE_EMAIL); $priority=filter_input(input_get, 'priority', FILTER_VALIDATE_INT);

Use parameterised queries (binding) $stmt = $pdo->prepare( 'SELECT user_id FROM user WHERE username = :username & password = :password ); $result = $stmt->execute([ username => $username, password => $password]);

PHP binding mot Oracle db $stid = oci_parse($conn,"insert INTO mytab (id, text) VALUES(:id_bv, :text_bv) ); oci_bind_by_name($stid, ":id_bv", $id); oci_bind_by_name($stid, ":text_bv", $text); oci_execute($stid);

My debugging and performance toolbox Charles - http proxy (Fidler for Windows brukere) XDebug - remote debugging, tips: ini_set("xdebug.scream") Xhprof - profiling JMeter - load testing PHPunit - unit testing Behat - behavior-driven development https://github.com/lovesoftware

Frontend - skjema

Skjema - et nødvendig onde Skjema står mellom bruker og mål Login -> tilgang Registrering ->gi veldighet Gi info -> få nedlastning Selvbetjening Bestille sydentur Søk og filtrering

Konvertering Tommelfinger regel: 5% reduksjon pr felt i skjema Det man forstår vil man lettere oppgi Det man ikke forstår, vil man være motvillig til å oppgi Graden av motivasjon har innvirkning på hvor mye motstand man orker å jobbe seg gjennom Kan du flytte noen spørsmål/valg til etterpå?

Bedre skjema Økt omsetning Lavere administrasjonskostnader Fornøyde brukere

Don`t make me think Tekstene er viktige, både label, placeholder, hjelpetekst og feilmelding Bruk riktig input type Riktig rekkefølge Intern og ekstern konsekvent design, ikke vær kreativ Det er bedre å fikse, enn å komme med feilmelding (trim, regex, uppercase osv)

Don`t waste my time Ikke spørr om unødvendigheter Ikke tving meg til å lese lange tekster Bruk oppslag på postnr, mobil, medlemsnr osv (spesielt viktig på mobile devicer, der inntasting er kostbart) Ikke spørr om noe som systemet kan/bør vite, er du innlogget, eller kommer via en PURL, så utnytt det til å gjøre det enkelt for bruker Det som er inn nå, er å gjette hva bruker vil, og så heller ha en undo-mulighet. Noen valg er opplagte

Brukervennlighet Tips og hjelp nærme feltet Feilmelding som er til hjelp Tydlig design på feilmeldinger Validering med JavaScipt (evt. ajax, om det trengs en tur til serveren) Possitiv validering kan i noen tilfeller forbedre skjema betraktelig (f.eks. om ønsket brukernavn er ledig)

Standard fargebruk

Captcha er dårlig brukeropplevelse Bruk heller et skjult felt Som skal være tomt Som skal ha fast innhold Som skal ha et bestemt innhol, som du programmer mot, serverside

UU - Universal Utforming http://uu.difi.no/veiledning/nettsider/uu-skolen Mange krav til skjema Label koblet med for=id Hjelpetekster og feilmeldinger Knapper må være tydelig knapper Tastatur navigering

HTML kode pattern og required er glimrende for validering novalidate på skjema hindrer browser fra å validere, bedre at vi gjør det data- gir oss utrolig mange mulighet, f.eks. datamsg= Vi trenger din e-post for.

Litt jquery har aldri skadet noen // vise felt for e-post, dersom man vil ha nyhetsbrev $( #nyhetsbrev ).on( change, function(){ if($(this).is( :checked )) $( #epost ).slidedown(); else $( #epost ).slideup(); }); // vis resten av skjema, dersom bruker trykker på knappen $( #add ).on( click, function(){ $(this).remove(); $( #more ).fadein(); });

PHP snacks $c = $a?: $b; $_POST=array_map( trim,$_post); $array = (array)$object; if (!isset($_session)) session_start(); /* @var $item ItemModel */ echo $item->title;

Tools og anbefalinger http://snipsave.com - ta vare på code snippets https://security.sensiolabs.org/check - sjekk composer.lock https://www.transformy.io/#/app - alternativ til Excel for å jobbe med copy&paste og export/import http://www.webpagetest.org

jquery plugins http://digitalbush.com/projects/masked-input-plugin http://bootboxjs.com http://harvesthq.github.io/chosen