Changeset 2319


Ignore:
Timestamp:
11/29/09 20:18:59 (2 years ago)
Author:
karpet
Message:

release 0.08

Location:
Sort-SQL/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • Sort-SQL/trunk/Changes

    r2301 r2319  
    2525          that match \W 
    2626 
     270.08  29 Nov 2009 
     28        - fix regex in SQL-injection filter from 0.07 to allow table 
     29          prefixes on column names. 
     30 
  • Sort-SQL/trunk/lib/Sort/SQL.pm

    r2301 r2319  
    55use vars qw( $VERSION );    # for version 5.005... 
    66 
    7 $VERSION = '0.07'; 
     7$VERSION = '0.08'; 
     8 
     9my $debug = $ENV{PERL_DEBUG} || 0; 
    810 
    911sub parse { 
     
    1618    while ( my ( $prop, $dir ) = splice( @s, 0, 2 ) ) { 
    1719 
    18         next if $prop =~ m/\W/;    # avoid sql injection 
     20        $debug and warn sprintf( "prop='%s'  dir='%s'\n", $prop, $dir || '' ); 
     21 
     22        next if $prop =~ m/[^\.\w]/;    # avoid sql injection 
    1923 
    2024        if ( !defined $dir ) { 
  • Sort-SQL/trunk/t/02-sql-injection.t

    r2302 r2319  
    11use strict; 
    22use warnings; 
    3 use Test::More tests => 3; 
     3use Test::More tests => 5; 
     4 
     5#use Data::Dump qw( dump ); 
     6 
    47use_ok('Sort::SQL'); 
    58 
    69#use Data::Dump qw( dump ); 
    710 
    8 my $nefarious_sql = "name id; drop\rtable\rtest;\rselect\r1\r"; 
     11my $nefarious_sql = "name, id; drop\rtable\rtest;\rselect\r1\r"; 
    912 
    1013ok( my $parsed = Sort::SQL->string2array($nefarious_sql), 
     
    1417 
    1518is_deeply( $parsed, [ { name => 'ASC' } ], "bad sql is stripped" ); 
     19 
     20my $more_bad_sql = "t1.name DESC, t2.id asc;drop\rtable\rtest;select\r1"; 
     21 
     22ok( my $parsed2 = Sort::SQL->string2array($more_bad_sql), 
     23    "parse order string 2" ); 
     24 
     25#diag( dump($parsed2) ); 
     26 
     27is_deeply( 
     28    $parsed2, 
     29    [ { 't1.name' => 'DESC' }, { 't2.id' => 'ASC' } ], 
     30    "more bad sql is stripped" 
     31); 
Note: See TracChangeset for help on using the changeset viewer.