|
| 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 |
| | |
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 (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 |
| | |
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 |
| | |
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
| |
|
|