[Rio-pm] CGI::Cookie - BUG ?

Lucas Mateus lucasmateus.oliveira em gmail.com
Domingo Setembro 14 21:55:24 PDT 2008


Eu aki mexendo nuns codigos antigos achei um BUG no CGI, a funcao unescape
que substitui + por ' ' dos valores GET (teste.cgi?nome=joao+mendes) tambem
é processada no valor do Cookie, isso significa que usando CGI eh bom tomar
cuidado com os '+' em valores tratados por ele.

--------------------------------------------------------------------------------------------------------------------------------------

*CGI.pm 3.42 * http://search.cpan.org/~lds/CGI.pm-3.42/CGI.pm

2782: $self->{'.cookies'} = CGI::Cookie->fetch
2783:  unless $self->{'.cookies'};

*CGI::Cookie 1.29  *http://search.cpan.org/~lds/CGI.pm-3.42/CGI/Cookie.pm

42: my $raw_cookie = get_raw_cookie(@_) or return;    ## apenas pega o
 cookie | sub fetch
43:  return $class->parse($raw_cookie);                         ## faz o
parse do cookie   | sub fetch

101: @values = map unescape($_),split(/[&;]/,$value.'&dmy');  ## A funcao
unescape vem de CGI::Util::unescape | sub parse

*CGI::Util 1.5_01 *http://search.cpan.org/~lds/CGI.pm-3.42/CGI/Util.pm

212:  $todecode =~ tr/+/ /; # pluses become spaces

--------------------------------------------------------------------------------------------------------------------------------------

Isso eh suficiente pra grarantir que o valor do cookie nao pode ter '+',
algoritmos de criptografia como Digest::MD5::md5_base64 (
http://search.cpan.org/~gaas/Digest-MD5-2.36/MD5.pm#FUNCTIONS) utiliza esse
caracter.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20080915/294533f9/attachment.html>


Mais detalhes sobre a lista de discussão Rio-pm