Steffen Kaiser wrote:
You've wrote that you've disabled CGI --
Dunno, but I wouldn't weight PHP more secure than "general" CGI ??

With header injection attacks, it doesn't really matter whether the target is PHP or CGI. It's a matter of how the message actually gets sent. With PHP's mail function, you build up the headers in a single string and the whole thing is passed to sendmail. Any To:, Cc:, or Bcc: fields found in that list are added to the recipients. A CGI script that called sendmail with the -t option would have the same problem:

If the script takes user input for any header, it's possible for an attacker to pass in something like
    "I have a question\nBcc: [EMAIL PROTECTED]"
and insert extra headers into the outgoing message. If they add "\n\n" they can even insert their own message body.

This could probably be avoided if PHP's mail function used some sort of structure for the headers where each header was a separate string, but as things are you need to sanitize any user-supplied data that you use in any header.

One way you can test your own scripts for this is to create a copy of your form and replace all your <input> and <select> elements with <textarea> (even checkboxes and radio buttons). That way you can try passing the script multi-line fields and see whether it accepts the extra lines, strips them out, or converts the newlines to spaces and wraps the extra-long headers.

--
Kelson Vibber
SpeedGate Communications <www.speed.net>
_______________________________________________
NOTE: If there is a disclaimer or other legal boilerplate in the above
message, it is NULL AND VOID.  You may ignore it.

Visit http://www.mimedefang.org and http://www.roaringpenguin.com
MIMEDefang mailing list [email protected]
http://lists.roaringpenguin.com/mailman/listinfo/mimedefang

Reply via email to