Pessoal,
Uso o pugin web developer do firefox há um bom tempo mas só agora percebi que ele tem algumas funcionalidades que prejudicam a segurança dos sistemas web.
Com ele, entre outra coisas, podemos fazer com que campos do tipo password (que exibem ******) sejam convertidos pra tipo text, podemos habilitar campos marcados com disabled=“disabled” e ainda podemos exibir todas as informações do formulário, onde inclusive todos os campos hidden são exibidos e, o que é pior, podem ser editados.
Gostaria de saber, especialmente pra o caso dos campos hidden poderem ser editados, qual a solução que vocês indicam pra não permitir que uma pessoa utilizando tal plugin edite um campo hidden
- já tentei colocar readonly=“readonly” (por mais estranho que pareça ter um campo hidden e readonly), mas a função de “habilitar campos” do plugin o torna editável.
- pensei em não colocar o valor em um campo hidden e, ao invés disso, colocá-lo em uma variável javascript e quando eu quiser enviar o formulário, através de DHTML eu montaria o campo hidden e enviaria o valor (mas não sei se essa é a única ou a melhor opção, portanto gostaria da opinião de vocês).
[]'s
Deixe de ser paranóico (ou como disse nossa querida ministra, “relaxe e goze”.) O Web Developer tem a opção “View Generated Source”, entre outras. Então por mais que você tente fechar os buracos, vai acabar sobrando algum.
Se sempre vai sobrar algum, gostaria de encontrar uma solução que possibilite pelo menos que sobre o buraco mais difícil de entrar.
E a idéia de montar o campo por DHTML é apenas na hora de enviar o formulário… O campo não seria gerado até então.
Bom, o Web Developer tem também um Javascript debugger, se não me engano. Então mesmo isso (montar os dados via Javascript) dá para enganar.
Tendo em um campo hidden
O malandro vai pelo Web Developer, exibe os dados do formulário e facilmente troca o valor digitando o valor que ele quiser.
Se eu montasse esse campo e passasse o valor tudo por javascript como ele faria pra trocar o valor?
Bem, o mais correto (na minha opinião), é fazer validação dos dados sempre no servidor, e deixar o mínimo possível no cliente. Deixe seus campos editáveis, porém valide-os a cada request.
Agora estou imaginando - só vale a pena ter campos hidden que você não possa modificar sem provocar algum erro capturável na sua aplicação. Por exemplo: podem estar cifrados, com o vetor de inicialização dependendo do número da requisição da página.
Vale a pena ter campos hidden quando não houver envolvidos requisitos de segurança quanto à possibilidade de mudar seus valores e que não justifiquem esforços adicionais para serem alcançados.