| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | email injection Fra : J Christensen | 
  Dato :  11-02-06 17:14 |  
  |   
            Jeg har været så uheldig, at en emailformular på min hjemmeside er
 blevet brugt til at sende emails i alle retninger (jeg har som
 webmaster fået alle fejlmeldingerne).
 
 Jeg er nu (!) ved at lave lidt forebyggende og har læst og kopieret
 noget kode:
 
 if (eregi("\r",$navn) || eregi("\n",$navn) || eregi("@",$navn)) {
         die("Ingen emailadresse i navnefeltet, tak");
 }
 
 men jeg kan indsætte alle de \r\n, jeg vil, i feltet, hvorimod der
 reageres, som der bør, ved et snabel-a.
 
 Hvad er det lige, jeg ikke har forstået.....
 
 Og er det ikke nok, at der ikke kan indsættes en emailadresse (og at
 der ikke kan sættes kommaer i emailfeltet)?
 
 Mvh.
 Janni Christensen
 
  
            
             |   |   
            
        
 
            
         
           Erik Ginnerskov (12-02-2006) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  12-02-06 01:09 |  
  |   |   |   
            
        
 
            
         
           Dennis Munding (12-02-2006) 
         
	
            | Kommentar Fra : Dennis Munding | 
  Dato :  12-02-06 13:26 |  
  |  
 
            Hej Erik!
 "Erik Ginnerskov" <erik@donotspammmeplease.invalid> skrev i en meddelelse 
 news:43ee7c96$0$15788$14726298@news.sunsite.dk...
 > Prøv at kigge på denne side. Den er lige blevet opdateret af samme grund:
 >
 >     http://hjemmesideskolen.dk/scripts/phpmail.php
Du har en fejl (tror jeg nok!?) i flg. linie:
 !eregi("\n",$_POST['email']))  // tjek, at der ikke er "linjeskift" i 
 "email"
 Er der ikke en ")" for meget??
 En anden ting - jeg har samme problem, som du og Janni havde - har modtaget 
 nogle "hyggelige" mails via min formmail.... :-/
 Men jeg har lidt problemer med at implementere din kode i min egen...
 Jeg har lagt min "send-fil" op på nettet her:
 http://www.skovaa-munding.dk/Send.phps
Håber, at der er en kyndig, som kan hjælpe mig - problematikken er beskrevet 
 nederst i filen...
 På forhånd mange tak for hjælpen!
 Med venlig hilsen
 -- 
 Dennis Munding
 Web-master
 http://www.skovaa-munding.dk/, http://www.mundings-memorial.dk/
http://www.cantica.dk/, http://www.eds-denmark.dk/
            
             |   |   
            
        
 
            
         
            Johan Holst Nielsen (12-02-2006) 
         
	
            | Kommentar Fra : Johan Holst Nielsen | 
  Dato :  12-02-06 18:57 |  
  |  
 
            Dennis Munding wrote:
 > Hej Erik!
 > "Erik Ginnerskov" <erik@donotspammmeplease.invalid> skrev i en meddelelse 
 > news:43ee7c96$0$15788$14726298@news.sunsite.dk...
 > 
 >>Prøv at kigge på denne side. Den er lige blevet opdateret af samme grund:
 >>
 >>    http://hjemmesideskolen.dk/scripts/phpmail.php
> 
 > 
 > Du har en fejl (tror jeg nok!?) i flg. linie:
 > 
 > !eregi("\n",$_POST['email']))  // tjek, at der ikke er "linjeskift" i 
 > "email"
 > 
 > Er der ikke en ")" for meget??
 Nej - nr. 2 er slut på if'en ;)
 > En anden ting - jeg har samme problem, som du og Janni havde - har modtaget 
 > nogle "hyggelige" mails via min formmail.... :-/
  >
 > Men jeg har lidt problemer med at implementere din kode i min egen...
 > Jeg har lagt min "send-fil" op på nettet her:
 > 
 >  http://www.skovaa-munding.dk/Send.phps
> 
 > Håber, at der er en kyndig, som kan hjælpe mig - problematikken er beskrevet 
 > nederst i filen...
 if(empty($navn) || empty($email) || empty($emne) ||
 empty($tekst))
 Laves om til
 if(empty($_POST['navn']) ||
     empty($_POST['email']) ||
     empty($_POST['emne']) ||
     empty($_POST['tekst']) ||
     strpos($_POST['navn'],'mundings-memorial.dk') !== false ||
     strpos($_POST['email'],'mundings-memorial.dk') !== false ||
     strpos($_POST['navn'],'@') !== false ||
     eregi("\n",$_POST['navn']) ||
     eregi("\r",$_POST['navn']) ||
     eregi("\n",$_POST['email']) ||
     eregi("\r",$_POST['email']) ||
 ) {
 ....
 }
 mvh
 Johan
            
              |   |   
            
        
 
            
         
             Johan Holst Nielsen (12-02-2006) 
         
	
            | Kommentar Fra : Johan Holst Nielsen | 
  Dato :  12-02-06 18:59 |  
  |   
            Johan Holst Nielsen wrote:
 > if(empty($navn) || empty($email) || empty($emne) ||
 > empty($tekst))
 > 
 > Laves om til
 > 
 > if(empty($_POST['navn']) ||
 >    empty($_POST['email']) ||
 >    empty($_POST['emne']) ||
 >    empty($_POST['tekst']) ||
 >    strpos($_POST['navn'],'mundings-memorial.dk') !== false ||
 >    strpos($_POST['email'],'mundings-memorial.dk') !== false ||
 >    strpos($_POST['navn'],'@') !== false ||
 >    eregi("\n",$_POST['navn']) ||
 >    eregi("\r",$_POST['navn']) ||
 >    eregi("\n",$_POST['email']) ||
 >    eregi("\r",$_POST['email']) ||
 
 Den sidste skal selvfølgelig ikke have || med ... var lige lidt for 
 meget copy-paste.
 
 mvh
 Johan
  
            
             |   |   
            
        
 
            
         
              Dennis Munding (12-02-2006) 
         
	
            | Kommentar Fra : Dennis Munding | 
  Dato :  12-02-06 21:00 |  
  |  
 
            Hej Johan!
 "Johan Holst Nielsen" <spam@phpgeek.dk> skrev i en meddelelse 
 news:43ef7752$0$78279$157c6196@dreader1.cybercity.dk...
 > Johan Holst Nielsen wrote:
 >> if(empty($navn) || empty($email) || empty($emne) ||
 >> empty($tekst))
 >>
 >> Laves om til
 >>
 >> if(empty($_POST['navn']) ||
 >>    empty($_POST['email']) ||
 >>    empty($_POST['emne']) ||
 >>    empty($_POST['tekst']) ||
 >>    strpos($_POST['navn'],'mundings-memorial.dk') !== false ||
 >>    strpos($_POST['email'],'mundings-memorial.dk') !== false ||
 >>    strpos($_POST['navn'],'@') !== false ||
 >>    eregi("\n",$_POST['navn']) ||
 >>    eregi("\r",$_POST['navn']) ||
 >>    eregi("\n",$_POST['email']) ||
 >>    eregi("\r",$_POST['email']) ||
 Det virker fint, tak! Men! Jeg kunne godt tænke mig at dele det op, som 
 herunder:
 if(empty($_POST['navn']) ||
     empty($_POST['email']) ||
     empty($_POST['emne']) ||
     empty($_POST['tekst']))
 --> Fejl-melding nr. 1
 elseif(
     strpos($_POST['navn'],'mundings-memorial.dk') !== false ||
     strpos($_POST['email'],'mundings-memorial.dk') !== false ||
     strpos($_POST['navn'],'@') !== false)
 --> Fejl-melding nr. 2
 elseif(
     eregi("\n",$_POST['navn']) ||
     eregi("\r",$_POST['navn']) ||
     eregi("\n",$_POST['email']) ||
     eregi("\r",$_POST['email']))
 {
 --> Fejl-melding nr. 3
 Det har jeg prøvet, men uanset hvilken bevidst fejl jeg laver, så sender den 
 mailen alligevel...??
 > Den sidste skal selvfølgelig ikke have || med ... var lige lidt for meget 
 > copy-paste.
 Det kender jeg godt!   
Tak for hjælpen indtil nu!
 Håber du kan hjælpe mig med det sidste....?
 Med venlig hilsen
 -- 
 Dennis Munding
 Web-master
 http://www.skovaa-munding.dk/, http://www.mundings-memorial.dk/
http://www.cantica.dk/, http://www.eds-denmark.dk/ 
            
             |   |   
            
        
 
            
         
               Johan Holst Nielsen (12-02-2006) 
         
	
            | Kommentar Fra : Johan Holst Nielsen | 
  Dato :  12-02-06 21:04 |  
  |   
            Dennis Munding wrote:
 > Hej Johan!
 > "Johan Holst Nielsen" <spam@phpgeek.dk> skrev i en meddelelse 
 > news:43ef7752$0$78279$157c6196@dreader1.cybercity.dk...
 > 
 >>Johan Holst Nielsen wrote:
 >>
 >>>if(empty($navn) || empty($email) || empty($emne) ||
 >>>empty($tekst))
 >>>
 >>>Laves om til
 >>>
 >>>if(empty($_POST['navn']) ||
 >>>   empty($_POST['email']) ||
 >>>   empty($_POST['emne']) ||
 >>>   empty($_POST['tekst']) ||
 >>>   strpos($_POST['navn'],'mundings-memorial.dk') !== false ||
 >>>   strpos($_POST['email'],'mundings-memorial.dk') !== false ||
 >>>   strpos($_POST['navn'],'@') !== false ||
 >>>   eregi("\n",$_POST['navn']) ||
 >>>   eregi("\r",$_POST['navn']) ||
 >>>   eregi("\n",$_POST['email']) ||
 >>>   eregi("\r",$_POST['email']) ||
 > 
 > 
 > Det virker fint, tak! Men! Jeg kunne godt tænke mig at dele det op, som 
 > herunder:
 > 
 > if(empty($_POST['navn']) ||
 >     empty($_POST['email']) ||
 >     empty($_POST['emne']) ||
 >     empty($_POST['tekst']))
 > 
 > --> Fejl-melding nr. 1
 > 
 > elseif(
 >     strpos($_POST['navn'],'mundings-memorial.dk') !== false ||
 >     strpos($_POST['email'],'mundings-memorial.dk') !== false ||
 >     strpos($_POST['navn'],'@') !== false)
 > 
 > --> Fejl-melding nr. 2
 > 
 > elseif(
 >     eregi("\n",$_POST['navn']) ||
 >     eregi("\r",$_POST['navn']) ||
 >     eregi("\n",$_POST['email']) ||
 >     eregi("\r",$_POST['email']))
 > {
 > 
 > --> Fejl-melding nr. 3
 > 
 > Det har jeg prøvet, men uanset hvilken bevidst fejl jeg laver, så sender den 
 > mailen alligevel...??
 
 Kan du ikke sende en phps til hele scriptet? :) Tror ikke fejlen ligger 
 i if/elseif'erne.... selvom det kun er hurtigt kigget igennem... :)
 
 mvh
 Johan
  
            
             |   |   
            
        
 
            
         
                Dennis Munding (12-02-2006) 
         
	
            | Kommentar Fra : Dennis Munding | 
  Dato :  12-02-06 21:12 |  
  |   |   |   
            
        
 
            
         
           Kim Ludvigsen (12-02-2006) 
         
	
            | Kommentar Fra : Kim Ludvigsen | 
  Dato :  12-02-06 12:38 |  
  |  
 
            Den 11-02-06 17.14 skrev J Christensen følgende:
 > Jeg er nu (!) ved at lave lidt forebyggende og har læst og kopieret
 > noget kode:
 > 
 > if (eregi("\r",$navn) || eregi("\n",$navn) || eregi("@",$navn)) {
 >         die("Ingen emailadresse i navnefeltet, tak");
 > }
 Jeg er først lige begyndt at lege med php, så jeg kan ikke forklare, 
 hvorfor det ikke virker - jeg prøvede et script i stil med ovenstående, 
 også uden held. "\" blev ikke medtaget som et tegn, så scriptet 
 reagerede udelukkende på "n" og "r", hvilket jo ikke er så praktisk.
 Efter at have prøvet mig frem, fik jeg det til at virke med:
 if (eregi("[\]",$navn) || eregi("[\]",$email)|| eregi("  ",$navn)){
       die(header( 'Location:  http://***.dk/ikkesendt.html' ));
     }
 Den forbyder så al brug af "\" i navne- og mail-felterne, men det burde 
 jo ikke være det store problem.
 > Og er det ikke nok, at der ikke kan indsættes en emailadresse (og at
 > der ikke kan sættes kommaer i emailfeltet)?
 Man kan vist også forhindre misbrug ved at samle felterne i en enkelt 
 streng som dette:
 $oplysninger="Følgende er sendt via kontaktformular på 
 hjemmesiden:\r\n\r\n$navn\r\n$adresse1\r\n$adresse2\r\n$postnr\r\n$by\r\n$email\r\n$telefon\r\n\r\nBesked:\r\n$besked"; 
 Jeg har i hvert fald aldrig oplevet misbrugsproblemer - ovenstående 
 forebyggelse er udelukkende lavet for at slippe for at få kontakt-mails 
 hver gang nogen forsøger at misbruge formen.
 Er der nogen, der vil kommentere, om samlingen af felter forhindrer misbrug?
 -- 
 Mvh. Kim Ludvigsen
 Sunbird: gratis kalender som du kan dele med andre.
 http://kimludvigsen.dk
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |