/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Injection i mailformular
Fra : Erik Ginnerskov


Dato : 29-01-06 23:46

Hej NG

Jeg har en mailformular i php på
<http://hjemmesideskolen.dk/scripts/phpmail.php>, hvor scriptkoden er vist
nederst på siden.

Desværre viser det sig, at scriptet er følsomt for injection. Der sker det,
at en type spambot kan misbruge formularen til at sende spam og
modtageradressen er så også noteret som afsenderadresse.

Jeg ville derfor gerne have scriptet udbygget med en funktion, som
autogenerer et password, som præsenteres grafisk i formularen og som skal
indtastes for at kunne sende fra formularen.

Noget bud på hvordan?

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



 
 
Erlend Klakegg Bergh~ (30-01-2006)
Kommentar
Fra : Erlend Klakegg Bergh~


Dato : 30-01-06 00:04

Erik Ginnerskov skrev:
> Hej NG
>
> Jeg har en mailformular i php på
> <http://hjemmesideskolen.dk/scripts/phpmail.php>, hvor scriptkoden er vist
> nederst på siden.
>
> Desværre viser det sig, at scriptet er følsomt for injection. Der sker det,
> at en type spambot kan misbruge formularen til at sende spam og
> modtageradressen er så også noteret som afsenderadresse.
>
> Jeg ville derfor gerne have scriptet udbygget med en funktion, som
> autogenerer et password, som præsenteres grafisk i formularen og som skal
> indtastes for at kunne sende fra formularen.
>
> Noget bud på hvordan?

Tja, det smarteste du kan gjøre er vel å si at man ikke kan ha samme
epost som sender og mottaker, og de IPer som prøver blir bannet i f.eks.
48 timer.

Alternativ kan du også bruke et ticketsystem som tvinger de til å ha en
gyldig session hele tiden, i tillegg til at session også har nedtelling
av et eller annet slag.


--

Vennlig hilsen

Erlend Klakegg Bergheim

Mikkel Z. Herold (30-01-2006)
Kommentar
Fra : Mikkel Z. Herold


Dato : 30-01-06 00:10

On 29-01-2006 23:45 Erik Ginnerskov wrote:
> Desværre viser det sig, at scriptet er følsomt for injection. Der sker det,
> at en type spambot kan misbruge formularen til at sende spam og
> modtageradressen er så også noteret som afsenderadresse.

Dit script må være for usikkert, når det kan lade sig gøre. Prøv først
at læse http://securephp.damonkohler.com/index.php/Email_Injection og
brug deres løsningsforslag (kør noget regex, der renser dine formular-data).

> Jeg ville derfor gerne have scriptet udbygget med en funktion, som
> autogenerer et password, som præsenteres grafisk i formularen og som skal
> indtastes for at kunne sende fra formularen.

Hvis du virkelig vil det (det gør det jo unægteligt noget mere
besværligt for dine brugere, men, okay, det er sikkert), så kig på
http://err0r.dk/download.php?details=6

Mikkel

--
"At first just a rustle of canvas
And the gentlest breath on my face
But a galloping line of white horses
Said that soon we were in for a race"
Sting - The Wild Wild Sea

http://www.mzh.dk

Bertel Lund Hansen (30-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 30-01-06 00:50

Mikkel Z. Herold skrev:

>> Jeg ville derfor gerne have scriptet udbygget med en funktion, som
>> autogenerer et password, som præsenteres grafisk i formularen og som skal
>> indtastes for at kunne sende fra formularen.

> Hvis du virkelig vil det (det gør det jo unægteligt noget mere
> besværligt for dine brugere, men, okay, det er sikkert),

I forbindelse med DK-Hostmasters grafiske kode var der en der
skrev at enhver scriptkiddie ved hvordan man skal omgås den
slags. Det er i øvrigt smadderirriterende for brugerne.

Den sikreste og brugervenligste løsning er at barbere input for
(potentielt) skadelige koder.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Erik Ginnerskov (30-01-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 30-01-06 01:43

Bertel Lund Hansen wrote:

> I forbindelse med DK-Hostmasters grafiske kode var der en der
> skrev at enhver scriptkiddie ved hvordan man skal omgås den
> slags.

Nu er det vist ikke ligefrem hackere, som sidder og misbruger en
mailformular. Jeg har den opfattelse, at det sker via en robot og en sådan
kan naturligvis ikke aflæse et tekst, som er integreret i en grafik - og kan
følgelig ikke sende noget.

> Det er i øvrigt smadderirriterende for brugerne.

De gange, hvor jeg har skullet indtaste et sådant password fra en grafik,
har jeg ikke fundet det irriterende.

> Den sikreste og brugervenligste løsning er at barbere input for
> (potentielt) skadelige koder.

Kan du forklare det nærmere?

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Bertel Lund Hansen (30-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 30-01-06 01:57

Erik Ginnerskov skrev:

>> Den sikreste og brugervenligste løsning er at barbere input for
>> (potentielt) skadelige koder.

> Kan du forklare det nærmere?

Kort fortalt består det i at tjekke at inputtet ikke indeholder
f.eks."to:", "cc:", "bcc" osv.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Erik Ginnerskov (30-01-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 30-01-06 02:19

Bertel Lund Hansen wrote:

> Kort fortalt består det i at tjekke at inputtet ikke indeholder
> f.eks."to:", "cc:", "bcc" osv.

Der skal netop outputtes en bcc - afsenderen får en kopi af den sendte mail.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Benny Nissen (30-01-2006)
Kommentar
Fra : Benny Nissen


Dato : 30-01-06 10:13

Erik Ginnerskov wrote:
> Bertel Lund Hansen wrote:
>
>> Kort fortalt består det i at tjekke at inputtet ikke indeholder
>> f.eks."to:", "cc:", "bcc" osv.
>
> Der skal netop outputtes en bcc - afsenderen får en kopi af den sendte mail.
>

Ja, men der må ikke stå bcc i indputtet. Der må heller ikke være
linieskift i felter med navn og emailadresse. Der må heller ikke være @
i navne, telefonnumre o.s.v.
Det var det jeg forsøgte at vise i den anden post jeg sendte i nat.

--
Benny Nissen

Erik Ginnerskov (30-01-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 30-01-06 18:07

Benny Nissen wrote:

> Det var det jeg forsøgte at vise i den anden post jeg sendte i nat.

Javel. Men hvor og hvordan skal det så puttes ind, i formularen eller i
sender.php?

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Benny Nissen (30-01-2006)
Kommentar
Fra : Benny Nissen


Dato : 30-01-06 18:36

Erik Ginnerskov wrote:
> Benny Nissen wrote:
>
>> Det var det jeg forsøgte at vise i den anden post jeg sendte i nat.
>
> Javel. Men hvor og hvordan skal det så puttes ind, i formularen eller i
> sender.php?
>

I den fil der modtager data fra formularen og sender mailen, altså
sender.php

Jeg forsøger lige at uddybe det lidt:
Du har fire felter, der kan skrives i; name, subject, email og message.

Feltet navn må *ikke* indeholde linieskift eller '@' eller
'hjemmesideskolen.dk' eller :

if(
   !strpos($_POST['name'], "hjemmesideskolen.dk") &&
   !strpos($_POST['name'], "@") &&
   !eregi("\r",$_POST['name']) &&
   !eregi("\n",$_POST['name'])
)
{
   echo "Navnet er ok";
}

Ovenstående undersøger om strengen 'hjemmesideskolen.dk' er en del af
navnet. Hvis ja, kan du roligt regne med det er en spammer.
Dernæst undersøges om '@' er den del af navnet. Hvis ja = spammer.
Så undersøges om '\n' (linieskift) eller '\r' (carrige return) indgår i
navnet. Hvis ja = ja, du har sikkertgættet det

Det kan evt. udvides med at undersøge om der er tal i navnet. Det er der
jo ikke i normale navne, så hvis der er = ... yeps, spammer.

Det samme bør du så gøre med felterne subject og email. Dog må der gerne
være 1 i email, og der skal jo være @.
Det må bare *ikke* være linieskift i hverken subject eller email.

Det der sker er, at du 'ubeskyttet' sender :
$headers="From: ".$_POST['name']."<".$_POST['email'].">";

Hvis jeg så vil spamme er det blot at udfylde emailfeltet med:
'spammer@notme.tld\ncc: spam@modtager.tld' (husk her, at \n betyder
linieskift)

Din $header vil nu pludselig indeholde en emailadresser der skal sendes
en cc-mail til, nemlig spam@modtager.tld

--
Benny Nissen

Erik Ginnerskov (31-01-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 31-01-06 01:40

Benny Nissen wrote:

> Du har fire felter, der kan skrives i; name, subject, email og
> message.
>
> Feltet navn må *ikke* indeholde linieskift eller '@' eller
> 'hjemmesideskolen.dk' eller :
>
> [snip kode]
>
> Ovenstående undersøger om strengen 'hjemmesideskolen.dk' er en del af
> navnet. Hvis ja, kan du roligt regne med det er en spammer.

> osv.

Det lyder altsammen logisk nok.

Jeg kan bare ikke se, hvordan det vil kunne smide modtageradressen ind som
afsenderadresse, hvilken både jeg og en anden har oplevet.

Modtageradressen er af gode grunde ikke synlig for afsenderen. Altså må
spammerne benytte en anden teknik, som din udvidelse af scriptet så vidt jeg
kan se ikke kan beskytte mod.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Benny Nissen (31-01-2006)
Kommentar
Fra : Benny Nissen


Dato : 31-01-06 02:00

Erik Ginnerskov wrote:

> Det lyder altsammen logisk nok.
>
> Jeg kan bare ikke se, hvordan det vil kunne smide modtageradressen ind som
> afsenderadresse, hvilken både jeg og en anden har oplevet.

Jo, det kan det netop fordi mail() i php sender headers som 4. argument.

Hvis headers indeholder:

From: Benny Nissen <news@bennynissen>\n
Bcc: Erik <erik@domain.tld>

Så bliver mailen sendt til både modtager, altså 1. argument til mail()
og som bcc: til erik@domain.tld som angivet i headeren; 4. argument.

> Modtageradressen er af gode grunde ikke synlig for afsenderen. Altså må
> spammerne benytte en anden teknik, som din udvidelse af scriptet så vidt jeg
> kan se ikke kan beskytte mod.

Jo, ved at undgå \n og \r i emailadresser, navne o.s.v. som kan indgå i
headers. Uden linieskift (\n) vil en bcc: ikke tolkes korrekt.

--
Benny Nissen

Erik Ginnerskov (31-01-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 31-01-06 02:47

Benny Nissen wrote:

> Jo, ved at undgå \n og \r i emailadresser, navne o.s.v. som kan indgå
> i headers. Uden linieskift (\n) vil en bcc: ikke tolkes korrekt.

Jeg prøver at lave en test. Så får vi se, hvad der sker.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Erik Ginnerskov (04-02-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 04-02-06 21:20

Erik Ginnerskov wrote:

> Jeg prøver at lave en test. Så får vi se, hvad der sker.

Jeg har nu prøvet at putte Bennys kode ind i sender.php:

<?php
if (isset($_POST['submit'])) {
if (!empty($_POST['name']) && !empty($_POST['subject']) &&
!empty($_POST['email']) && !empty($_POST['message'])) {
$headers="From: ".$_POST['name']."<".$_POST['email'].">";

!strpos($_POST['name'], "domain.dk") &&
!strpos($_POST['email'], "domaine.dk") &&
!strpos($_POST['name'], "@") &&
!eregi("\r",$_POST['name']) &&
!eregi("\n",$_POST['name']) &&
!eregi("\r",$_POST['email']) &&
!eregi("\n",$_POST['email'])) /* linje 26 her */

if (@$_POST['customer_copy']) {
$headers .= "\r\nBcc: ".$_POST['email'];
}
if (@mail("navn@domain.dk", strip_tags($_POST['subject']),
stripslashes(strip_tags($_POST['message'])), $headers)) {
echo "<p>Tak for din henvendelse.</p>";
}
else {
echo "<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv
igen!</p>";
}
}
else {
echo "<p>Alle felter skal udfyldes!</p>";
}
}
?>

Det giver en fejlmelding:

Parse error: parse error in ... sender.php on line 26

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Benny Nissen (05-02-2006)
Kommentar
Fra : Benny Nissen


Dato : 05-02-06 12:43

Erik Ginnerskov wrote:
> Erik Ginnerskov wrote:
>
>> Jeg prøver at lave en test. Så får vi se, hvad der sker.

Der skal lige flyttes lidt rundt i koden:

if (isset($_POST['submit']))
{
   if (!empty($_POST['name']) &&    
   !empty($_POST['subject']) &&   
   !empty($_POST['email']) &&    
   !empty($_POST['message']))    
   !strpos($_POST['name'], "domain.dk") &&
   !strpos($_POST['email'], "domaine.dk") &&
   !strpos($_POST['name'], "@") &&
   !eregi("\r",$_POST['name']) &&
   !eregi("\n",$_POST['name']) &&
   !eregi("\r",$_POST['email']) &&
   !eregi("\n",$_POST['email']))
   {
      $headers="From: ".$_POST['name']."<".$_POST['email'].">";
      if (@$_POST['customer_copy'])
      {
      $headers .= "\r\nBcc: ".$_POST['email'];
      }
      if (@mail("navn@domain.dk", strip_tags($_POST['subject']),
      stripslashes(strip_tags($_POST['message'])), $headers))
      {
      echo "<p>Tak for din henvendelse.</p>";
      }
      else
      {
      echo "<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv
igen!</p>";
      }
   }
   else
   {
      echo "<p>Alle felter skal udfyldes!</p>";
   }
}


--
Benny Nissen

Erik Ginnerskov (05-02-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 05-02-06 18:26

Benny Nissen wrote:
> Erik Ginnerskov wrote:
>> Erik Ginnerskov wrote:
>>
>>> Jeg prøver at lave en test. Så får vi se, hvad der sker.
>
> Der skal lige flyttes lidt rundt i koden:
>

> !strpos($_POST['name'], "domain.dk") &&
> !strpos($_POST['email'], "domaine.dk") &&

Hvad skal jeg skrive i stedet for domain.dk i linjerne her over?


> !eregi("\n",$_POST['email']))

Linjen her over er linje 27

> if (@mail("navn@domain.dk", strip_tags($_POST['subject']),

Korrekt modtageradresse blev indsat her.

En testkørsel gav denne fejlmeddelelse:

Parse error: parse error in .... sender.php on line 27

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Benny Nissen (05-02-2006)
Kommentar
Fra : Benny Nissen


Dato : 05-02-06 18:36

Erik Ginnerskov wrote:

> Hvad skal jeg skrive i stedet for domain.dk i linjerne her over?

hjemmesideskolen.dk

Du kan lave flere ens linier, hvis du vil frasortere andre domæner også.

>
>> !eregi("\n",$_POST['email']))
>
> Linjen her over er linje 27

> Parse error: parse error in .... sender.php on line 27
>

Ja, sorry. Der er kommet en slut ) formeget med i
!empty($_POST['message']))

Der skal kun være ét ) i slutningen af linien.

--
Benny Nissen

Erik Ginnerskov (05-02-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 05-02-06 21:17

Benny Nissen wrote:

> Ja, sorry. Der er kommet en slut ) formeget med i
> !empty($_POST['message']))

Scriptet ser nu sådan ud:

<?php
if (isset($_POST['submit']))
{
if (!empty($_POST['name']) &&
!empty($_POST['subject']) &&
!empty($_POST['email']) &&
!empty($_POST['message'])
!strpos($_POST['name'], "hjemmesideskolen.dk") && //linje 21
!strpos($_POST['email'], "hjemmesideskolen.dk") &&
!strpos($_POST['name'], "@") &&
!eregi("\r",$_POST['name']) &&
!eregi("\n",$_POST['name']) &&
!eregi("\r",$_POST['email']) &&
!eregi("\n",$_POST['email']))
{
$headers="From: ".$_POST['name']."<".$_POST['email'].">";
if (@$_POST['customer_copy'])
{
$headers .= "\r\nBcc: ".$_POST['email'];
}
if (@mail("navn@domain.dk", strip_tags($_POST['subject']),
stripslashes(strip_tags($_POST['message'])), $headers))
{
echo "<p>Tak for din henvendelse.</p>";
}
else
{
echo "<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>";
}
}
else
{
echo "<p>Alle felter skal udfyldes!</p>";
}
}
?>

Det giver fejlmeldingen:

Parse error: parse error in ... sender.php on line 21

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Leonard (05-02-2006)
Kommentar
Fra : Leonard


Dato : 05-02-06 21:25

"Erik Ginnerskov" <erik@donotspammmeplease.invalid> wrote:

> if (!empty($_POST['name']) &&
> !empty($_POST['subject']) &&
> !empty($_POST['email']) &&
> !empty($_POST['message'])
> !strpos($_POST['name'], "hjemmesideskolen.dk") && //linje 21
> !strpos($_POST['email'], "hjemmesideskolen.dk") &&
> !strpos($_POST['name'], "@") &&
> !eregi("\r",$_POST['name']) &&
> !eregi("\n",$_POST['name']) &&
> !eregi("\r",$_POST['email']) &&
> !eregi("\n",$_POST['email']))

>Parse error: parse error in ... sender.php on line 21

Tæl dine parenteser, enten mangler der en ( lige efter if elelr også
er der en ) for meget tilsidst.

--
Leonard
http:/leonard.dk/hjemmeside/

Benny Nissen (05-02-2006)
Kommentar
Fra : Benny Nissen


Dato : 05-02-06 21:26

Leonard wrote:

> Tæl dine parenteser, enten mangler der en ( lige efter if elelr også
> er der en ) for meget tilsidst.
>

Denne gang var det && der manglede i linie 20 ...

--
Benny Nissen

Benny Nissen (05-02-2006)
Kommentar
Fra : Benny Nissen


Dato : 05-02-06 21:26

Erik Ginnerskov wrote:

> !empty($_POST['message'])
> !strpos($_POST['name'], "hjemmesideskolen.dk") && //linje 21

Mangler && efter linie 20



--
Benny Nissen

Erik Ginnerskov (05-02-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 05-02-06 21:45

Benny Nissen wrote:

>> !empty($_POST['message'])
>> !strpos($_POST['name'], "hjemmesideskolen.dk") && //linje 21
>
> Mangler && efter linie 20

Tak, så kom det til at spille - når man ikke gør noget ulovligt.

Jeg prøvede lige at smide en email-adresse ind i navnefeltet, det kunne den
ikke acceptere - scriptet meldte tilbage, at alle felter skal udfyldes.

Spamsikringen ser altså ud til at virke.

Endnu en gang tak.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Bertel Lund Hansen (31-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 31-01-06 07:25

Benny Nissen skrev:

>> Jeg kan bare ikke se, hvordan det vil kunne smide
>> modtageradressen ind som afsenderadresse, hvilken både jeg og
>> en anden har oplevet.

> Jo, det kan det netop fordi mail() i php sender headers som 4. argument.

Jeg synes ikke det besvarer spørgsmålet.

I scriptet er f.eks. defineret variablen $fra. Den er
utilgængelig for inputteren.

Scriptet sætter:   $fra = "Enelleranden <bruger@domain.tld>";

Inputteren sætter (indirekte) $til, $emne, $indhold og $headers.
Han kan også godt lade $headers indeholde en "From:" - men
hvordan kan han hitte ud af at der i scriptets skjulte tekst står
"Enelleranden <bruger@domain.tld>".

Svar: Det kan han ikke, og den slags mails er lavet på en anden
måde end den vi snakker om her. Hvis man har en adresseliste, er
det en smal sag at sende en mail med samme modtager- og
afsenderangivelse.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Benny Nissen (31-01-2006)
Kommentar
Fra : Benny Nissen


Dato : 31-01-06 09:37

Bertel Lund Hansen wrote:

> Svar: Det kan han ikke, og den slags mails er lavet på en anden
> måde end den vi snakker om her. Hvis man har en adresseliste, er
> det en smal sag at sende en mail med samme modtager- og
> afsenderangivelse.
>

Nej, det bliver noget med at gætte, men det er vel ikke så svært at gætte ?

Hjemmesiden ligger på hjemmesideskolen.dk. Godt, så sætter vi email,
mail, webmaster, info eller hvis vi finder et navn på siden eller lign.
før @ og hjemmesideskolen.dk efter.

Derfor checker jeg også i scriptet om sidens domæne er indeholdt i
afsenderadressen. Hvis ja, så er det jo enten mig selv der sender mail,
eller en spammer.

--
Benny Nissen

Erik Ginnerskov (01-02-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 01-02-06 01:54

Benny Nissen wrote:

> Hjemmesiden ligger på hjemmesideskolen.dk. Godt, så sætter vi email,
> mail, webmaster, info eller hvis vi finder et navn på siden eller
> lign. før @ og hjemmesideskolen.dk efter.

Problemet er bare, at siden sender til en adresse hos get2net. Det kan man
ikke se i formularen. Derfor er det ikke noget, man bare lige kan gætte sig
til.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Leonard (01-02-2006)
Kommentar
Fra : Leonard


Dato : 01-02-06 08:27

"Erik Ginnerskov" <erik@donotspammmeplease.invalid> wrote:

>Problemet er bare, at siden sender til en adresse hos get2net. Det kan man
>ikke se i formularen. Derfor er det ikke noget, man bare lige kan gætte sig
>til.

Det er spammeren også ret ligeglad med, formularen sendes til
sender.php på domænet formularen ligger på og hvad der sker derefter
er ligegyldigt for spamforsøget.

--
Leonard
http:/leonard.dk/hjemmeside/

Benny Nissen (31-01-2006)
Kommentar
Fra : Benny Nissen


Dato : 31-01-06 10:25

Bertel Lund Hansen wrote:

> Jeg synes ikke det besvarer spørgsmålet.
>
> I scriptet er f.eks. defineret variablen $fra. Den er
> utilgængelig for inputteren.
>
> Scriptet sætter:   $fra = "Enelleranden <bruger@domain.tld>";

Nej, scriptet sætter:

$headers="From: ".$_POST['name']."<".$_POST['email'].">";

email udfyldes blot med en tilfældig valgt adresse + @ + sidens domænenavn

Se koden på:
http://bennynissen.dk/docs/mail.phps


--
Benny Nissen

Erlend Klakegg Bergh~ (31-01-2006)
Kommentar
Fra : Erlend Klakegg Bergh~


Dato : 31-01-06 10:36

Benny Nissen skrev:
> Bertel Lund Hansen wrote:
>
>> Jeg synes ikke det besvarer spørgsmålet.
>>
>> I scriptet er f.eks. defineret variablen $fra. Den er
>> utilgængelig for inputteren.
>>
>> Scriptet sætter: $fra = "Enelleranden <bruger@domain.tld>";
>
> Nej, scriptet sætter:
>
> $headers="From: ".$_POST['name']."<".$_POST['email'].">";
>
> email udfyldes blot med en tilfældig valgt adresse + @ + sidens domænenavn
>
> Se koden på:
> http://bennynissen.dk/docs/mail.phps

Nå skulle det vel strengt tatt stått:
$headers="From: \"".$_POST['name']."\" <".$_POST['email'].">";


--

Vennlig hilsen

Erlend Klakegg Bergheim

Benny Nissen (31-01-2006)
Kommentar
Fra : Benny Nissen


Dato : 31-01-06 10:57

Erlend Klakegg Bergheim wrote:

> Nå skulle det vel strengt tatt stått:
> $headers="From: \"".$_POST['name']."\" <".$_POST['email'].">";

Nej. Headers laves med "From: navn<emailadresse>". Der skal ikke "
omkring navn og adresse.

From: kan erstattes med Cc: Bcc: og meget mere.


--
Benny Nissen

Erlend Klakegg Bergh~ (31-01-2006)
Kommentar
Fra : Erlend Klakegg Bergh~


Dato : 31-01-06 11:40

Benny Nissen skrev:
> Erlend Klakegg Bergheim wrote:
>
>> Nå skulle det vel strengt tatt stått:
>> $headers="From: \"".$_POST['name']."\" <".$_POST['email'].">";
>
> Nej. Headers laves med "From: navn<emailadresse>". Der skal ikke "
> omkring navn og adresse.

Tja, nå blir det da helst følgende:

"Jeg har mange navn" <navn@domene.com>

Har du kontrollert hvordan epostleseren din gjør det, evt. hva som står
i RFC-en?

--

Vennlig hilsen

Erlend Klakegg Bergheim

Bertel Lund Hansen (30-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 30-01-06 10:48

Erik Ginnerskov skrev:

>> Kort fortalt består det i at tjekke at inputtet ikke indeholder
>> f.eks."to:", "cc:", "bcc" osv.

> Der skal netop outputtes en bcc - afsenderen får en kopi af den sendte mail.

Ja, men den BCC må alligevel ikke kunne findes i *inputfeltets*
tekst. Det er kun input der skal barberes.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Leif Neland (30-01-2006)
Kommentar
Fra : Leif Neland


Dato : 30-01-06 09:29

Erik Ginnerskov wrote:
> Bertel Lund Hansen wrote:
>
>> Kort fortalt består det i at tjekke at inputtet ikke indeholder
>> f.eks."to:", "cc:", "bcc" osv.
>
> Der skal netop outputtes en bcc - afsenderen får en kopi af den
> sendte mail.

Hvad skriptet outputter af bcc har ikke noget at gøre med at input ikke må
indeholde nogen bcc.

Leif



Benny Nissen (30-01-2006)
Kommentar
Fra : Benny Nissen


Dato : 30-01-06 01:56

Erik Ginnerskov wrote:

>> Den sikreste og brugervenligste løsning er at barbere input for
>> (potentielt) skadelige koder.
>
> Kan du forklare det nærmere?
>

Noget med:

   !strpos($_POST['name'], "hjemmesideskolen.dk") &&
   !strpos($_POST['email'], "hjemmesideskolen.dk") &&
   !strpos($_POST['name'], "@") &&
   !eregi("\r",$_POST['name']) &&
   !eregi("\n",$_POST['name']) &&
   !eregi("\r",$_POST['email']) &&
   !eregi("\n",$_POST['email']))

--
Benny Nissen

Erik Ginnerskov (30-01-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 30-01-06 02:15

Benny Nissen wrote:

> Noget med:
>
> !strpos($_POST['name'], "hjemmesideskolen.dk") &&
> !strpos($_POST['email'], "hjemmesideskolen.dk") &&
> !strpos($_POST['name'], "@") &&
> !eregi("\r",$_POST['name']) &&
> !eregi("\n",$_POST['name']) &&
> !eregi("\r",$_POST['email']) &&
> !eregi("\n",$_POST['email']))

Øh, ikke forstået.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Jakob Munck (30-01-2006)
Kommentar
Fra : Jakob Munck


Dato : 30-01-06 10:24

> Nu er det vist ikke ligefrem hackere, som sidder og misbruger en
> mailformular. Jeg har den opfattelse, at det sker via en robot og en sådan
> kan naturligvis ikke aflæse et tekst, som er integreret i en grafik - og
> kan
> følgelig ikke sende noget.
>

Hvis en robot ALDRIG kan aflæse tekst i en grafikfil, hvorfor slører de der
bruger denne teknik så de tal og bogstaver der vises, så de står utydeligt
og mere eller mindre roteret? Det er vel ikke for at genere brugerne?


v.h.
Jakob



Michael Zedeler (30-01-2006)
Kommentar
Fra : Michael Zedeler


Dato : 30-01-06 14:39

Jakob Munck wrote:
>>Nu er det vist ikke ligefrem hackere, som sidder og misbruger en
>>mailformular. Jeg har den opfattelse, at det sker via en robot og en sådan
>>kan naturligvis ikke aflæse et tekst, som er integreret i en grafik - og
>>kan
>>følgelig ikke sende noget.
>
> Hvis en robot ALDRIG kan aflæse tekst i en grafikfil, hvorfor slører de der
> bruger denne teknik så de tal og bogstaver der vises, så de står utydeligt
> og mere eller mindre roteret? Det er vel ikke for at genere brugerne?

Det er noget vås at skrive at robotter ikke kan læse indhold i
grafikfelter. Med lidt primitiv OCR kan man nemt afkode den slags.

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

Erik Ginnerskov (30-01-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 30-01-06 17:59

Jakob Munck wrote:

> Hvis en robot ALDRIG kan aflæse tekst i en grafikfil, hvorfor slører
> de der bruger denne teknik så de tal og bogstaver der vises, så de
> står utydeligt og mere eller mindre roteret? Det er vel ikke for at
> genere brugerne?

Jamen, det er da netop det, der er fidusen. En standardfont på en rimeligt
jævn baggrund er let at aflæse med et OCR-program.

Men ved at anvende en font med bogstaver og tal, der afviger fra
normalformatet og ved at lægge det hele på en baggrund med striber på kryds
og tværs skal der lidt mere end et computerprogram til at aflæse koden - der
skal menneskelig intelligens til.

Der er det ved det, at computere er fænomenale til matematik, logik og
rutiner. Men skal der skelnes detaljer og udledes noget læseligt i et
flimret billede, er vi mennesker stadig computerne langt overlegne.

Man kan måske udvikle et program, der kan lære at aflæse en
verifikationskode i dette virvar af streger og skæve former, men der er så
mange frit tilgængelige email-adresser og ubeskyttede formularer i den
virkelige verden, at det næppe kan betale sig.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Erik Ginnerskov (30-01-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 30-01-06 01:38

Mikkel Z. Herold wrote:

>> Jeg ville derfor gerne have scriptet udbygget med en funktion, som
>> autogenerer et password, som præsenteres grafisk i formularen og som
>> skal indtastes for at kunne sende fra formularen.
>
> Hvis du virkelig vil det (det gør det jo unægteligt noget mere
> besværligt for dine brugere, men, okay, det er sikkert), så kig på
> http://err0r.dk/download.php?details=6

Sikkerhed frem for alt. Jeg har været præsenteret for systemet på flere hel-
og halvkommercielle sider og har ikke følt mig generet af at skulle indtaste
den ekstra oplysning.

Nu skal jeg bare have det inkoporeret i mit formmailscript. Som stand-alone
har jeg testet, at det fungerer som ønsket.

Jeg takker.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Erik Ginnerskov (30-01-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 30-01-06 18:04

Erik Ginnerskov wrote:
> Mikkel Z. Herold wrote:

>> http://err0r.dk/download.php?details=6

> Nu skal jeg bare have det inkoporeret i mit formmailscript. Som
> stand-alone har jeg testet, at det fungerer som ønsket.

Så fik jeg det til at fungere. En foreløbit testversion her:

http://hjemmesideskolen.dk/scripts/test/phpmail.php

Nu resterer bare at være sikker på, hvilken fontfil man gerne må bruge til
formålet, uden at få nogle rettighedshavere på nakken.

Nogen bud på det?

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Michael Zedeler (30-01-2006)
Kommentar
Fra : Michael Zedeler


Dato : 30-01-06 08:34

Erik Ginnerskov wrote:
> Jeg har en mailformular i php på
> <http://hjemmesideskolen.dk/scripts/phpmail.php>, hvor scriptkoden er vist
> nederst på siden.
>
> Desværre viser det sig, at scriptet er følsomt for injection. Der sker det,
> at en type spambot kan misbruge formularen til at sende spam og
> modtageradressen er så også noteret som afsenderadresse.
>
> Jeg ville derfor gerne have scriptet udbygget med en funktion, som
> autogenerer et password, som præsenteres grafisk i formularen og som skal
> indtastes for at kunne sende fra formularen.
>
> Noget bud på hvordan?

Brug billedegeneratorfunktionerne - det mest oplagte er GD. Der er
masser af dokumentation af dem på php.net:

http://dk.php.net/manual/en/ref.image.php

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

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste