[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