1 / 19

Databasestøttet Webpublicering, E2005 Forelæsning 11

Databasestøttet Webpublicering, E2005 Forelæsning 11. mandag 14. november 2005 Webprogrammering med PHP Hvad har vi lært indtil nu? Cookies Sessioner Hvor kommer brugerne fra? (User Tracking) Eksamen (typer af opgaver og delopgaver) Introduktion til øvelsen PS11.

Download Presentation

Databasestøttet Webpublicering, E2005 Forelæsning 11

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Databasestøttet Webpublicering, E2005 Forelæsning 11 • mandag 14. november 2005 • Webprogrammering med PHP • Hvad har vi lært indtil nu? • Cookies • Sessioner • Hvor kommer brugerne fra? (User Tracking) • Eksamen (typer af opgaver og delopgaver) • Introduktion til øvelsen PS11 ITU Databasestøttet Webpublicering W2

  2. Status gennemgåede emner. • Variabler, tal, strenge og arrays • Beregninger • if-sætninger og løkker • Funktioner og kodegenbrug • Indhentning af data fra brugere med forms • Check af brugerinput med regulære udtryk • Databasetilgang (MySQL) • Afsending af emails fra PHP, datoer • On-line Community Web-sites ITU Databasestøttet Webpublicering W2

  3. Hvad er Cookies • En cookie er en tekst-streng, som en web-server sender til en browser, og som browseren returnerer uændret, når browseren igen besøger det samme site. Se evt. http://www.netscape.com/newsref/std/cookie_spec.html • Cookies er nyttige til håndtering af simple form for tilstande- session tracking: – Brugerspecialisering (Customization) – Fokusering af banner ads - hvad var en bruger interesseret i ved sidste besøg på sitet ? – Adgangskontrol — login mekanisme ITU Databasestøttet Webpublicering W2

  4. I Netscape på Linux kan man se hvilke cookies, der er installeret Find filen .netscape/cookies: (alternativtf.eks., filen .mozilla/……/cookies.txt) # Netscape HTTP Cookie File # http://www.netscape.com/newsref/std/cookie_spec.html # This is a generated file! Do not edit. linuxlab.dk FALSE / FALSE 1262307600 ad_browser_id 13 linuxlab.dk FALSE / FALSE 1262307600 last_visit 988628269 linuxlab.dk FALSE / FALSE 1262307600 second_to_last_visit 988628263 linuxlab.dk FALSE / FALSE 1262307600 ad_user_login 60,4C6F674E6432373032 Filformatet er som følger: ITU Databasestøttet Webpublicering W2

  5. Problemer med Cookies • Almindelige browsere understøtter kun omkring 20 cookies pr. site • Almindelige browsere understøtter kun omkring 300 cookies i alt • En cookie kan højest være 4 kilobytes stor • Cookies implementerer en anden form for tilstand, end tilstanden implementeret med form-variabler • Sikkerhedsproblemer med Cookies – “trekants-angreb” (triangel-attack) • Cookies kan true privatlivets fred ITU Databasestøttet Webpublicering W2

  6. Sikkerhedsproblem med Cookies — et “trekants-attack” Hvis et site benytter cookies til identification af en person kan personen blive udsat for et “trekants-attack”: • En skurk sætter en webside op, der omdirigerer (redirects) personer til Amazon’s bestillingsside for en bestemt bog (udenom alle forms) • Herefter sender skurken en email til en “uskyldig person”, som skurken ved køber ind på Amazon; skurken beder den “uskyldige person” om at “fange grisen” (trykke på et link) • Når den uskyldige person fanger grisen, bliver der bestilt en bog uden, at personen kan afværge købet — Amazon får tilsendt en cookie og accepterer bestillingen! Hvilket modtræk kan etableres? ITU Databasestøttet Webpublicering W2

  7. Sikkerhedsproblem Amazon skurk 1 2 3 4 5 1: Email til bruger om at han skal "fange grisen"2: Bruger "fanger grisen", dvs. aktiverer link hos skurken3: Skurken sender en redirect til Bruger om at aktivere link 4: Bruger bestiller bog hos Amazon5: Idet bruger også sender cookie til Amazon, så bestilles bogen helt uden at brugeren skal afgive flere informationer. Løsning: Tilføj en ”confirm page” til websitet. bruger ITU Databasestøttet Webpublicering W2

  8. Cookies som en Trussel mod Privatlivet Der er grunde til at nogle personer vælger at slå cookies fra i deres browser: • Søgemaskiner viser ads for, hvad man søgte efter sidste gang • problematisk hvis man bliver kigget over skulderen af arbejdsgiveren (eller han kikker i cookie-filen) Tilstandsproblemer • Forskelle mellem tilstand implementeret med cookies og tilstand implementeret med formvariabler • Problemer med cookies når flere browsere benyttes samtidig • hvad med “Tilbage”-knappen?  Back ITU Databasestøttet Webpublicering W2

  9. Registrering af Cookies fra PHP Sætte en cookie: • For at registrere, at en cookie skal sættes i browseren, kan PHP-funktion setcookie() benyttes: – setcookie(name, value, expire, path, domain, secure) • Kortere former er tilladte: – setcookie(name, value) – Eks.: setcookie("a","5") • Cookies skal sættes før HTML-kode sendes til browseren (f.eks., med echo) Læsning af Cookies i PHP • For at læse en cookie sendt med en forespørgsel kan et PHP-script kigge i et cookie-array: – $HTTP_COOKIE_VARS["mycookie"] – $_COOKIE["mycookie"] Sletning af Cookies • Cookies slettes ved at sætte en cookie med udløb i fortiden! ITU Databasestøttet Webpublicering W2

  10. Eksempel: CookieCount—cookiecount.php <? $count = $_COOKIE["count"]; if ( $count == "" ) { $count = 0; } setcookie("count", $count + 1); echo "<html><title>CookieCount</title> <body><h2>CookieCount: $count</h2> <a href=\"cookiecount.php\">Up</a> </body> </html>"; ?> Bemærk: • Der sendes ikke formvariabler med til scriptet i Up-linket! • Hvordan virker scriptet når flere browsere er åbne på samme client? ITU Databasestøttet Webpublicering W2

  11. Sessions i PHP • Med sessions gemmes tilstand på webserveren, og kun et sessionid gemmes som en cookie på clienten. • PHP har god support for sessions: - Funktionen session_start() ser, om en sessionid allerede er tilstede som en cookie på browseren.Ellers genereres et nyt sessionid, som gemmes på browseren som en cookie. - Når en session er startet (med start_session()), kan data gemmes og hentes fra et session-array: $_SESSION["myvar"] $HTTP_SESSION_VARS["myvar"] • Funktionen session_destroy() kan benyttes til at ryde op efter en session – lager frigives og sessionid cookien slettes på clienten. Potentielle problemer med sessions • Cookie-problemer, samt: • Det er ikke klart hvornår web-serveren kan antage at sessionslager kan genbruges eller smides væk • Eneste løsning: timeouts! ITU Databasestøttet Webpublicering W2

  12. Eksempel: session Basket —basket.php Implementation af en simpel indkøbskurv ved brug af sessions. <? session_start(); if ( $submit == "Empty Basket" ) { // destroy basket session_destroy(); // destroy session header("Location: basket.php"); exit; // reload and exit } $kurv = $_SESSION["kurv"]; if ( $new != "" ) $kurv[count($kurv)] = $new; // maybe add new stuff $_SESSION["kurv"] = $kurv; echo "<html><title>Session Basket</title> <body><h2>Session Basket</h2> <form action=\"basket.php\"><ul>"; for ( $i = 0 ; $i < count($kurv) ; $i ++ ) { // loop through array echo "<li>$kurv[$i]</li>"; } echo "<p><li> <input type=text name=new> <input type=submit value=Add> <input type=submit name=submit value=\"Empty Basket\"> </ul></form></body></html>"; ?> ITU Databasestøttet Webpublicering W2

  13. User Tracking: Hvor kommer brugerne fra, og hvor mange hits er der på mit web-site? Se webserverens access-logs: $ wc -l /web/login/log/access.log 1143 access.log $ less /web/login/log/access.log 194.237.174.86 - - [12/Apr/2000:01:47:35 +0200] \ "GET /faerdig.html HTTP/1.0" 200 1131 "" "AltaVista V2.3A crawler@evreka.com” 194.237.174.86 - - [12/Apr/2000:03:37:35 +0200] \ "GET /robots.txt HTTP/1.0" 404 212 "" "AltaVista V2.3A crawler@evreka.com" ... Forskellige webservere (Apache, AOLserver, ...) benytter samme standardformat for access-logs. ITU Databasestøttet Webpublicering W2

  14. Statistik fra access-log Følgende oplysninger kan hentes fra en web-servers access-log: • Typen af browser en bestemt bruger benytter • Antal brugere som har efterspurgt ikke-eksisterende filer — og hvor de har URL’erne fra • Antal brugere, der efterspørger en bestemt fil • Tiden en bruger i gennemsnit anvender på en fil, før brugeren fortsætter med en anden fil • Antal brugere, der klikker på bestemte banner-adds • Kommer en bruger tilbage? ITU Databasestøttet Webpublicering W2

  15. Ikke-eksisterende filer Eksempel: bruger indtaster en forkert URL i browserens “locationbar” Søg efter 404 (File Not Found) i access-log: 130.226.141.250 - - [17/Feb/2000:15:51:29 +0100] "GET /temperatur.html HTTP/1.1" 404 212 "" "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)" • Filnavnet temperatur.htmlskulle have været temperature.html • Brugeren benytter Internet Explorer (MSIE 5.0) på en Windows’98 maskine • Med UNIX host kommando, kan det ses at 130.226.141.250 svarer til ip-adressen på stud250.itu.dk: # hosts 130.226.141.250 Name: stud250.itu.dk Address: 130.226.141.250 • Brugeren har højst sandsynligt tastet URL’en direkte i browseren — ingen “referring” side.. ITU Databasestøttet Webpublicering W2

  16. Ikke-eksisterende fil p.g.a. forkert link Vi søger igen efter 404 (File Not Found) i access-log: 213.237.71.166 - - [20/Mar/2001:02:10:46 +0100] "GET /F2001/lec8/list2v.tcl HTTP/1.0" 404 456 "http://hug.itu.dk:8077/SlideExtractor/slide_extractor.tcl?presentation_id=49403" "Mozilla/4.73 [en] (X11; U; Linux 2.2.14-12 i686)" • Filen/list2v.tclskulle have været /listv2.tcl • Brugeren benytter Netscape v. 4.73 på en Linux maskine (kerne v. 2.2.14-12). • Med UNIX kommandoen hostkan det ses at 213.237.71.166 svarer til ip-adressen på: 213.237.71.166.adsl.suoe.worldonline.dk. • Fejlen skyldes et forkert link fra scriptet slide_extractor.tcl. – Vi kan altså se, hvilken anden side brugeren kommer fra – dvs.: vi kan se, hvilke sider, som indeholder ukorrekte links. (Links, der ikke virker, kaldes ofte døde links) ITU Databasestøttet Webpublicering W2

  17. Antal brugere, som har efterspurgt en bestemt fil Bestem antallet af linier i access-log indeholdende f.eks. GET /SlideExtractor/slide_extractor.tcl Det gøres således: # grep ’GET /SlideExtractor/slide_extractor.tcl’ access.log* | wc -l 1609 Her er en af linierne (med ekstra linieskift): 130.226.133.160 - - [05/Feb/2001:11:05:55 +0100] "GET /SlideExtractor/slide_extractor.tcl?presentation_id=48903 HTTP/1.0" 200 3428 "http://www.itu.dk/courses/W2/F2001/" "Mozilla/4.73 [en] (X11; U; Linux 2.2.14-12 i686)" • Med host kommandoen kan det ses at 130.226.133.160 svarer til ip-adressen vip160.itu.dk— det er en lokal bruger • Brugeren er sendt fra siden http://www.itu.dk/courses/W2/F2001/ den 5. februar 2001 kl. 12.05 (CET) • Tiden for et hit, tilsammen med de øvrige linier, kan bruges til at bestemme, hvor lang tid en person bruger på en side ITU Databasestøttet Webpublicering W2

  18. Eksamen • Skriftlig prøve 4 timer (2006-01-09) • Alle skriftlige hjælpemidler er tilladt (bøger, hæfter, noter osv.) • Computer eller PC er IKKE tilladt • Bedømmes efter 13-skalaen med ekstern censur • Generelle trends i et udvalg af eksamenssæt (f.eks. Web-site: Til salg af Pizza eller til Reserva-tion af Projektor eller Diners Society eller …..) • Elementer: HTML – PHP – Regulære Udtryk – SQL - Web-tjenesten (Web-service) ITU Databasestøttet Webpublicering W2

  19. Opgavesæt 11 • Opgavesæt PS11 er en “åben øvelse” • Hvis du har en ide til en lille web-service, har du nu mulighed for at bygge den! • Se opgavesættet på: http://www.it.edu/courses/W2/E2005/ps/ps11.html ITU Databasestøttet Webpublicering W2

More Related