On Tue, Dec 15, 2009 at 02:53:03PM +0000, Martin Evans wrote:
> If you are using the latest DBI and Perl 5.10.0 or 5.10.1 and running in
> taint mode (but have not set DBI's Taint, TainTIn, TaintOut) then use
> tainted strings in the SQL you issue the resulting data is tainted. All
> we were doing is adding $0 as a comment to the end of the SQL e.g., like
> this:
> 
> select * from table -- myprogram.pl
> 
> but $0 is tainted and so all data coming back from the select is tainted.
> 
> We moved our application from Perl 5.8.8 to an ubuntu box running 5.10.0
> a few weeks ago but did not notice this problem until late last week.
> This did not occur for us on 5.8.8 on another machine.
> 
> I've no idea what is tainting the returned data but this is reproducible
> for us here is a small amount of perl.

>From memory, perl tainting works on a per-statement basis. If a tainted
value is accessed during a statement then any new values created by that
statement are marked as tainted. The 'tainted value seen' flag gets
reset for each statement.

So I'd guess that you're using a single statement, like a select*_*
method, to pass the (tained) SQL in and get the result data back.

Tim.

Reply via email to