John, et al -- [Been a while! How ya been?]
...and then John Holmes said...
%
% David T-G wrote:
%
% >I'd like some sanity checks on safely using input for sending mail. I'm
...
% >At the moment, I am running escapeshellcmd() on the From:, To:, Subject:,
...
% >his own bandwidth limits). Unfortunately, escapeshellcmd() also escapes
% >the ? and &s in the URL and breaks it; I think it will have to go away.
% >I'm also ready to believe that I've overlooked half a dozen other things.
% >
% >How would you guys tackle this?
%
% This isn't what escapeshellcmd() is for; not sure why you chose that one.
Noobness, I suppose :-) I wanted to avoid having problematic commands
fed in to break my script; perhaps that's only a DB-type exploit (though
an answer that simple doesn't seem likely).
%
% Are you sending this as an HTML or Text email? Either way, you control
% the body of the email (the page that's being sent), so you don't really
% have to worry about that.
Just text.
%
% If you're sending an HTML mail, then use htmlentities() on the text
% before putting it in the email. If you're sending a text email, then you
% can strip_tags() from it.
Ah; OK.
%
% The biggest thing to look our for is mail header injection. If you're
Indeed. I figured as much, but escapeshellcmd() is as far as I got.
% taking any user input and putting it into the headers (from, to,
% subject, etc), then newlines need to be stripped. You're allowing the
Ahhhhhh... That makes sense. Thanks.
% user to set the To: address, I assume (the recipients). If you're
% sticking that $to varable from the user directly into mail(), you could
% be vulnerable (same if you create a From: header or use user input in
% the subject).
Yep.
%
% For example, say you're collecting my email address for the From: header.
%
% $headers .= "From: {$_POST['email']}\r\n";
...
% So strip newlines from user input or reject input if it contains newlines.
%
% str_replace(array("\r","\n",'',$text)
For the archives, you need ^^^^ here a closing ) on your array :-)
%
% Is one way to do it.
%
% If I left anything out, I'm sure Chris will jump on it. :)
Good; thanks to all in advance!
%
% --
%
% ---John Holmes...
HAND
:-D
--
David T-G
[EMAIL PROTECTED]
http://justpickone.org/davidtg/ Shpx gur Pbzzhavpngvbaf Qrprapl Npg!
pgpKH5GWtNSzL.pgp
Description: PGP signature

