Re: Opening a pipe when taint mode is enabled

[email protected] (Gunnar Hjalmarsson) Sat, 10 Jan 2009 12:59:32 +0100
Newsgroups perl.beginners.cgi
Message-ID <[email protected]>
Adam Jimerson wrote:
> I attached my code for my program,

You don't say what to do if the untainting fails. This code:

	if ($name =~ /^([-\@\w.]+)$/) {
		$name = $1;
	};

should better be:

	if ($name =~ /^([-\@\w.]+)$/) {
		$name = $1;
	} else {
		die "Untainting of the name failed";
	}

Please consider, for instance, what happens if the user submits both a 
first and last name.

> All the variables that have user submitted content go through the 
> above search string as soon as the program retrieves it.

I think it's just the $name variable that needs to be untainted for the 
program to pass Perl's taint check.

Since this is about a contact form, I can't help calling your attention 
to my contact form module. The link in the sig below takes you to a form 
that was created by that module. The whole code that is needed, given 
that the form has been installed, is:

	#!/usr/bin/perl -T
	use CGI::ContactForm;

	contactform (
	    recname   => 'My Name',
	    recmail   => '[email protected]',
	    styleurl  => '/style/ContactForm.css',
	);

You find the module at CPAN:
http://search.cpan.org/dist/CGI-ContactForm/

-- 
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl