Re: help protecting form to email from spammers



On 2006-08-28 17:07:49 -0600, jwhitley31NOSPAM@xxxxxxxx (J W) said:

Hello,

I am kind of a newb to php and could use some help. I have made a form to email php page that uses the mail function to send me the results of a form. The php portion looks like this:

<?PHP
if ($submit) {
$Address = !empty($Address) ? $Address : 'NA';
$Address2 = !empty($Address2) ? $Address2 : 'NA';
$City = !empty($City) ? $City : 'NA';
$State = !empty($State) ? $State : 'NA';
$Country = !empty($Country) ? $Country : 'NA';
$Postal = !empty($Postal) ? $Postal : 'NA';
$Phone = !empty($Phone) ? $Phone : 'NA';
$Company = !empty($Company) ? $Company : 'NA';
$EmailNot = !empty($EmailNot) ? $EmailNot : 'NO';
$today = date("m/d/y"); mail("me@xxxxxxxxxxxx",
"Info on $Regarding",
"A User has submitted a Contact form on Mydomain.com
on $today
================================================
Name: $FName $LName
Email: $Email
Address: $Address
$Address2
$City
$State
$Country
$Postal
Phone: $Phone
Company: $Company
Message: $Comment
Referer: $Referer
Opt-Out: $EmailNot",
"From: $FName $LName <$Email>");
header ("location: thanks.html");
} // end if they hit "Submit"
?>

Later on the page is the form itself (edited for brevity):

<form name="contactinfo" method="post">
(various input areas)
</form>

I know that as is this page isn't secure from a spammer exploiting it for their own purposes. Can someone help me clean it up to protect against that kind of thing? I believe the input data has to be validated / scrubbed or something? I've been googling and while I understand the concept I'm not quite getting how to do it within the framework of what I have already created,

Thanks much.

You will need to verify that a hacker hasn't injected extra lines into your To/CC/BCC/From/Subject fields. Looking at your code above I'd be most concerned about the $Regarding variable as it could be used for this. Here is a simple example:

if (stristr($Regarding, '\n') !== false || stristr($Regarding, '\r') !== false || stristr($Regarding, "\n") !== false || stristr($Regarding, "\r") !== false || stristr($Regarding, '%0A') !== false) {die("hacker");}

Note '\r' is the string \r while "\r" is a carriage return, "\n" means newline and '%0A' aslo creates a newline. If $Regarding was equal to "spam subject%0ABcc: someoneselse@xxxxxxxxxxxxxxxxx" I could send someoneelse@xxxxxxxxxxxxxxxxx some spam since everything after 'spam subject' is on a separate line. Email protocols would see this as a separate email header. This applies to any field a user has access to other than the actual body of the email.

See http://www.w3schools.com/php/php_secure_mail.asp The example there nicer than mine.

.



Relevant Pages

  • Re: Spaces in file names?
    ... str_replace is the way to go in PHP, you end up with code like this- ... SPAM and most manual SPAM so it's not a ... That said I don't want to have a situation where spammers ... My plan is to also remove nofollow from interesting comments ...
    (alt.internet.search-engines)
  • Re: mail() problem
    ... You should try SpamAssassin which is a very popular Open Source spam ... I already told you that base64 encoding leads you to spam filtering ... PHP Classes - Free ready to use OOP components written in PHP ...
    (alt.php)
  • Re: WYSIWYG or Rich Text in a Text Area to database?
    ... > I have actually tried that htmlArea but with no success. ... > I would try out the PHP you recommended but this is a windows server. ... >> | HTH ... >> | spam. ...
    (microsoft.public.frontpage.client)
  • Re: help protecting form to email from spammers
    ... I have made a form to email php page that uses the mail function to send me the results of a form. ... newline and '%0A' aslo creates a newline. ... If $Regarding was equal to "spam subject%0ABcc: someoneselse@xxxxxxxxxxxxxxxxx" I could send someoneelse@xxxxxxxxxxxxxxxxx some spam since everything after 'spam subject' is on a separate line. ... Email protocols would see this as a separate email header. ...
    (alt.php)
  • Protecting vital Web services from dDOS botnet attack (was: One page, multiple submit buttons)
    ... But I WANT Google and other search engines to spider my sites! ... only via Turing-test-protected PHP and the like. ... Harvested and used on 2009.Feb.21 to send spam from 89.136.183.35 ... spambot dDOS traffic that I attract to the shell machine. ...
    (comp.lang.php)