Tag Archives: server-side

PpW – Verificar campos de forms

Published by:

Uma coisas que frequentemente me dizem é para verificar os campos dos forms client-side (em Javascript, no browser) e não server-side (em PHP ou Perl, no servidor).

E é relativamente comum os campos serem verificados realmente client-side, e nunca serem verificados server-side.

Hoje a Internet é um meio acessível a pessoas com quase todo o tipo de conhecimentos de informática, desde os utilizadores finais, que não querem saber muito mais do que onde precisam de clicar para fazerem o que querem, até aos hacker (NOTA: hacker é uma palavra que sempre utilizado para abranger todos aqueles a quem não basta saber que as coisas funcionam, precisam de saber como e porquê) que conseguem, no caso da WEB, fazer requests HTTP manualmente, sem utilizar browsers.

Entre estes dois extremos existem vários níveis e a maioria dos utilizadores dividem-se por essa escala de forma mais ou menos disforme.

Quando fazemos verificações client-side estamos a pensar apenas nos primeiros níveis dessa escala, naqueles que apenas utilizam o site da forma que ele permite ser utilizado, que se limitam a utilizar o browser, normalmente o que vinha com o computador quando o compraram, algumas vezes um outro que alguém lhes instalou.

Mas esquecemos todos os que se encontram nos ultimos níveis da escala, aqueles que conhecem ferrementas que permitem fazer submissão de dados por HTTP sem serem os browsers, e aqueles que têm os conhecimentos de programar essas ferramentas.

Fazer um pequeno programa que enviar dados como se eles estivessem a ser enviados por um browser é bastante simples em várias linguagens. Em Perl, por exemplo, não passa de meia duzia de linhas de código (se não considerarmos os módulos utilizados, que estão já disponiveis).

Se as verificações forem feitas apenas no cliente os dados submetidos desta forma nunca são verificados. Mas se as verificações forem feitas no servidor não importa como os dados são enviados, são sempre verificados.

Concordo que fazer as verificações no cliente é mais rápido, pois podem ser feitas campo a campo, ou podem ser feitas antes de os dados do formulário serem enviados, o que permite reduzir o número de páginas pedidas ao servidor.

No entanto, fazer verificações apenas do lado do cliente é uma óptima forma de acabar com dados inconsistêntes na base de dados.

Se pretende fazer verificações do lado do cliente, não se esqueça de as fazer TAMBÉM do lado do servidor. O tempo que ocupa com essa tarefa é facilmente ganho mais tarde quando tentarem colocar dados inconsistêntes na sua base de dados.