David Steinsland – informatikkstudent og webutvikler

I de voksnes rekker..

| 2 kommentarer »

Det er ikke ofte jeg langer ut om meg selv i det offentlige fora, men akkurat nå følte jeg for det. Dette er dagen jeg fyller 18, og faller inn i de voksnes rekker. Det har blitt en stund siden forrige gang jeg ytret meg, men det er rett og slett kun fordi jeg ikke har hatt noe interessant å komme med.

Jeg kan forresten benytte denne anledningen til å påpeke at jeg, per i dag, har fått jobb i Arego AS som webutvikler med hovedfokus på PHP og MySQL. Til tross for min alder, så håper jeg at jeg kan bidra positivt til bedriftens videreutvikling, og dette er noe jeg ser frem til!

I en annen sammenheng har MinGate kommet ut i ny versjon på Github. Dette er et prosjekt i Porsgrunn kommune hvor innbyggere kan markere skader/feil i gaten sin, slik at noe kan bli gjort med det. Etter at en av utviklerne bak spurte om noen var interessert i pro-bono arbeid, slengte jeg meg på. Resultatet ligger på prosjektets område på Github.

Sikkerhet i PHP gjort lettere

| 5 kommentarer »

Når du utvikler en nettside, enten det er en applikasjon, rammeverk, bibliotek — hva som helst — er det desidert viktigste sikkerhet. Likevel er det mange som tar snarveier, og slurver seg unna. Om du vil unngå å stå med skjegget i postkassen den dagen du blir angrepet via XSS, CSRF eller SQL injections bør du følge med nå.

Hvorfor?

Du skal aldri stole på brukerne dine. Selv om det er familien eller vennene dine. Årsaken er at enkelte personer kan utnytte sårbarhetene i systemet ditt, som kan resultere i at sensitiv informasjon blir samlet, slettet eller endret. Det kan resultere i at noen tar fysisk kontroll over nettsiden din.

Hva kan man gjøre?

Ved å følge prinsippet ovenfor, må du sørge for å validere all data du skal hente inn fra brukerne. Du bør også sanitere data.

Validering: sjekke om data er av riktig type, for eksempel en ordentlig E-postadresse eller postnummer.
Sanitering: manipulasjon av data, som for eksempel å fjerne enkelte tegn/bokstaver/tall og så videre.

I PHP får vi tilgang til brukerdata via super-globalene $_GET, $_POST, $_COOKIE, $_SERVER og $_SESSION.

Her kan brukere bokstavelig talt skrive hva de vil, og det kan betyr store følger om du ikke sjekker dataene ordentlig.

Løsningen

Jeg har skrevet et bibliotek i PHP kalt «PHP Security Wrapper«. Dette biblioteket tar seg av brukerdata fra GET, POST, SERVER og COOKIE, samtidig som du får muligheten til både å validere og sanitere dem.

Biblioteket er selvfølgelig gratis, og oppdateres hyppig. Om du ønsker å lære mer om dette biblioteket kan du lese forumtråden jeg postet på Norsk Webforum, sjekke ut nettsiden og lese dokumentasjonen.

Det er ikke meningen at dette blogginnlegget skulle ta for seg hvordan du kan sikre deg mot angrep, men om du ønsker å lese videre på emnet kan du sjekke ut følgende linker:

Privatisteksamen i Informasjonsteknologi 1 (IT-1)

| 18 kommentarer »

Jeg har nylig vært i Bergen og fullført min privatisteksamen i Informasjonsteknologi 1, og ønsker å dele mine erfaringer med både faget og eksamen.

Bakgrunn for valget

I januar meldte jeg meg opp som privatist i faget Informasjonsteknologi 1. Dette gjorde jeg for å kunne ta IT-2 i tredjeklasse, og således slippe å velge Fysikk 2 eller Kjemi 2.

Siden jeg i år har fire programfag (3 realfag, 1 økonomifag) i tillegg til IT-1 som privatist, har jeg 38 timer i uken. Dette gjør at jeg slipper ett programfag i tredjeklasse, og trenger derfor kun å ha 2 programfag. Disse er nødt til å være fortsettende realfag. Det vil si at jeg har hatt fagene i andreklasse. Siden jeg ikke ønsket å gå videre med verken Fysikk 2 eller Kjemi 2, såg jeg en løsning som var å ta IT-1 og IT-2 som privatist. Det andre faget jeg fortsetter med er Matematikk.

Derfor vil jeg kun ha 20 timer totalt per uke i tredjeklasse (15 timer fellesfag, 5 timer matematikk), siden jeg ikke tar IT-2 på skolen.

Faget

Informasjonsteknologi-1 bygger på vår digitale verden, og tar opp emner som den digitale hverdagen, multimedier (film, lyd, bilde), Internett og databaser. Generelt sett vil faget være aktuelt for de som har en interesse om IT fra før, men også for de som ønsker å lære mer om det.

Faget er delt inn i tre kapittel: Digital samtid, Nettsteder og multimedier og Databaser.

Her vil du få en forståelse av hvordan digitalt utstyr fungerer, kommuniserer, er bygget opp; etiske regler og problemstillinger innen IT; hvordan Internettet er satt sammen, hvordan Internettsider er bygget opp og hva databaser er og hvordan de er bygget opp (for å nevne noe).

Læreboken heter IT-1, basisbok og fungerer som teoriboken for faget. Det er også flere tilleggsbøker til faget (Snarveien til …).

Programmer/hjelpemiddel

Digitale hjelpemidler er aktuelt i ethvert fag, enten det er matematikk eller norsk. Men hvilket fag er mer åpen for slike hjelpemidler enn Informasjonsteknologi?

Som privatist har jeg benyttet følgende programmer  mens jeg har lest til eksamen:

Det kan også være lurt å bruke et program for å sette opp nettsider (jeg benyttet meg av Notepad++):

Ressurser

Eksamen

Jeg hadde eksamen ved Bergen Handelsgymnasium 16:15. På forhånd hadde jeg mailet med Eksamenskontoret i fylket og fått dem til å endre på rekkefølgen slik jeg var førstemann. Jeg hadde faktisk benyttet meg av Google Street View til å identifisere den da ukjente bygningen, slik at jeg ved et Bergensbesøk for en knapp måned siden gjenkjente bygningen ved en tilfeldighet.

Da eksaminator og sensor møtte opp, var det et kjapt opprop av de påmeldte for å se hvem som hadde møtt opp. Etterpå ble jeg spurt om å si et tall, 1 eller 2. Jeg valgte 1 som symboliserte oppgavesett nummer én. Før forberedelsesleden min fikk jeg lov til å ta et kjapt overblikk på oppgavene, for å se om det var noe som virket helt gresk for meg. Det gjorde det ikke.

Jeg gikk så inn i eget rom og fikk 30 minutter til å lese gjennom, forstå, og utføre oppgavene jeg hadde valgt. Totalt var det tre oppgaver, som representerte hvert sitt kompetanseområde.

Første oppgave handlet om Internett, hvor jeg skulle presentere starten til det vi kjenner Internett, hva som muliggjør Internett (maskinvare, teknologi, standarder) og hva muligheter Internett gir.

Andre oppgave handlet om en uerfaren webdesigner som hadde «sendt meg» en HTML-kode som jeg måtte rydde opp i. Her skulle jeg altså påpeke feil i koden, foreslå endringer samt forklare hva CSS er.

Tredje — og siste oppgave — handlet om databaser, og jeg skulle tegne opp en modell for en bedrift. Her var det snakk om en bedrift som ønsket en kvalitetsikret modell over ordrer som kunder plasserte, hvilke varer som var tilgjengelige til enhver tid og så videre. Modellen skulle tilfredsstille tredje normalform (ergo alle normalformene).

Da jeg ble kalt inn til fremføring, begynte jeg fra toppen og snakket meg nedover. Totalt sett hadde jeg 30 minutter til rådighet, hvor sensor og eksaminator kunne komme med spørsmål underveis.

Databasemodellen min tegnet jeg på papir, som jeg viste frem til de to herrene som skulle vurdere meg.

Hele fremføringen (med spørsmål) tok ca. 20 minutter, da de stilte kun ett spørsmål («Hva er forskjellen på IP-telefoni og Skype?»).

Sensoren kom med en sarkastisk kommentar på slutten, og sa jeg burde snakket litt mindre slik at de kunne stille noen spørsmål. Deretter sa han at jeg hadde fortjent karakteren 6, uten tvil.

Da er altså årets første Eksamen unnagjort!

Wamp: Sette opp egen hjemmeserver

| 3 kommentarer »

Tidligere har jeg beskrevet hvordan du kan installere ffmpeg på Wamp, samt hvordan du kan opprette underdomener på Wampserver. Nå tenkte jeg å forklare hvordan du kan sette opp en liten hjemmeserver som du få tilgang til gjennom Internett.

Hva er en hjemmeserver?

Kort sagt er det et Webhotell du har på din egen PC. Du styrer alt av underdomener (forklart i egen artikkel), PHP-, Apache- og MySQL-innstillinger med mer. Veldig fleksibel løsning til utvikling, da du kan invitere andre utenfor nettverket ditt til f. eks. å teste systemet.

For å koble deg på hjemmeserveren, stilles det to krav:

  • WampServer må kjøres, og satt i Online-modus
  • Port 80 må være åpen, det vil si at du har viderekoblet denne i ruteren din til PC-ens IP-adresse.

NB: Du vil ikke bli tildelt et domenenavn (som «minside.com») da dette blir styrt av en DNS, som ofte koster penger.

Hva trenger vi?

Normalt bruker Internett port 80 til å sende og motta informasjon, men noen ISP-er har denne porten blokkert slik du ikke kan sette opp en hjemmeserver. Slapp av — det er mulig å jobbe seg rundt.

Om det skulle vise seg at porten er blokkert, må du konfigurere Apache til å følge med på (eng. «listen») en annen port. Velg gjerne 8080.

Videre i denne guiden tar jeg som utgangspunkt at du kan bruke port 80 uten problem (dette gjelder de aller, aller fleste).

Let’s get to it!

I mitt internnettverk har PC-en min (som serveren er installert på) en fast IP-adresse, 192.168.0.197. Ruteren min er en Linksys WRT54GL (som jeg for øvrig anbefaler på det sterkeste). Jeg tar ikke opp emnet om å videreføre porter i denne guide, da alle har hver sin ruter og oppsettet varierer derfor. Men ved å følge Port Forward sin enkle guide, blir det en lek å åpne porten. Sørg bare for at PC-en din er stilt inn med en statisk IP!

Når du har sørget for at porten din er åpen, vel — da er du i bunn og grunn ferdig. Om du er i tvil om du har åpnet porten skikkelig, så kan du ta deg en tur innom CanYouSeeMe og skriver inn 80 som portnummer. Du er nødt til å ha Wamp kjørende for at den skal klare å sjekke det. Om du får opp en feilmelding, er det fordi:

  • Du har gjort en feil da du åpnet porten din. Har du skrevet inn riktig IP-adresse, og haket av for «Enable» ?
  • ISP-en (Internett-tilbyderen) din blokkerer port 80, og du må derfor velge en annen port

Jeg vil råde deg til å passordbeskytte både phpMyAdmin og index.php i www-mappen. På denne måten har du kontroll over at ingen uvedkommende skal ødelegge prosjektene dine.

For å sjekke om du virkelig kan koble deg til serveren din, går du innom WhatIsMyIP og finner ut hvilken IP-adresse du har på Internett. Kopier denne inn i adressefeltet i nettleseren din, og se resultatet!

IP-en peker egentlig til ruteren din (det ytterste elementet i nettverket ditt), men ruteren vil registrere at du kommer fra Internett (port 80), og retter denne forespørselen videre til en PC på lokalnettet. Dette gjelder selvsagt kun dersom du har konfigurert ruteren din slik jeg har beskrevet.

Jeg kan skissere prosessen slik:

Om du føler det blir vanskelig å huske IP-adressen din hver gang du skal innom serveren din, kan du alltids registrere deg hos en gratis DNS-tilbyder.

Håper du fikk nytte av denne guiden! Kom gjerne med tilbakemeldinger i kommentarfeltet.