NOTÍCIA

Manipulação de formulários (segurança)

Falha: Output do website

Linguagens: HTML↳HTML45 conteúdosA importância do HTML e CSS para quem trabalha com UI Design e Design SystemProduto & UX · dez 2024Como hostear seu site HTML gratuitamente com GitHub PagesDev (Back & Front) · jun 2025SQL Server – Como criar um versionamento de código das suas Stored Procedures em HTML e com comentários da alteraçãoData · nov 2020Ver tudo em Dev (Back & Front) → e ASP

Descrição da falha:

“Várias vezes ficamos preocupados
com a segurança do site…”

Este artigo foi escrito pelo NoBrains,
um colaborador português. Então, vocês
encontrarão um português meio diferente.
O português de Portgual. Preferimos deixar a escrita
original pois é sempre bom ver o que realmente
o articulista quer passar…

Vamos lá…

Este artigo foi escrito para dar uma
ajuda às pessoas que usam a opção “maxlenght” nos seus
“inputs”.

Muitas vezes os programadores limitam
os seus campos de “input” usando a opção “maxlength”,
pensando, ou não, que estão assim a impedir que um visitante
insira uma linha de código maliciosa no formulário.

Tomem agora atenção ao
seguinte código:

teste.html

<form action="teste.asp"
method="post">
Username:<BR>

<input type="text" name="username"
value="" maxlength="8" size="10"><BR><BR>

Password:<BR>

<input type="password"
name="password" value="" maxlength="8"
size="10"><BR><BR>

<input type="submit"
name="valdiar" value="Log me in">

</form>

Este exemplo não passa de um simples
formulário em que o programador pede ao visitante para
inserir o seu “username” e “password”, com o fim de
fazer uma validação.

Se, por algum motivo, a minha intenção
ao visitar este website fosse danifica-lo de alguma
maneira, verificaria que no formulário de login não
podia inserir nada com mais de oito caracteres. Fazia
então fazer uma “sondagem” ao código do site usando
o “View Source” do browser. Feito isto, faz-se um copy
paste do formulário para um ficheiro de texto (.txt).

teste.txt (copy paste)

<form action="teste.asp"
method="post">

Username:<BR>

<input type="text"
name="username" value="" maxlength="8"
size="10"><BR><BR>

Password:<BR>

<input type="password"
name="password" value="" maxlength="8"
size="10"><BR><BR>

<input type="submit"
name="valdiar" value="Log me in">

</form>

teste.txt (alterado)

<form action="http://URL
DO SITE/teste.asp" method="post">

Username:<BR>

<input type="text"
name="username" value="" size="10"><BR><BR>

Password:<BR>

<input type="password"
name="password" value="" size="10"><BR><BR>

<input type="submit"
name="valdiar" value="Log me in">

</form>

Alterações:

Apaga – Opção maxlength

Adicionado – Form action, inseri o url
completo do ficheiro que vai fazer a validação, exemplo:
http://www.imasters.com.br/teste.asp.

Gravo agora o ficheiro no meu computador
com o nome “testeform.html” e executo-o, ficando assim
a “protecção maxlenght” passada.

Algumas prevenções:

Podemos tomar algumas prevenções para
que este tipo de problemas não seja muito frequente.

Vejam o seguinte código:

teste.asp

<%

‘Antes de mais,
vamos passar os valores inseridos no form para strings.

Username = Request.Form(“username”)

Password = Request.Form(“password”)

‘Vamos entao
fazer algumas verificacoes e mesmo alteracoes aos valores
inseridos.

‘Comecamos por
verificar se o tamanho dos valores inseridos

‘corresponde
ao restricto pela opcao maxlength.

If Len(Username)
> 8 Then ‘verificamos se o tamanho do valor e
maior do que 8

InfoValida = 0
‘Aqui criamos uma variavel que nos diz se os campos
nao tem o ‘tamanho correcto

Response.Write(“username
demasiado comprido”) ‘se for expomos esta msg

ElseIf Len(Password)
> 8 Then ‘igual para a password

InfoValida = 0
‘Aqui criamos uma variavel que nos diz se os campos
nao tem o ‘tamanho correcto

Response.Write(“password
demasiado comprida”) ‘igual para a password

Else ‘se os
tamanhos tiverem correctos

Username = Server.HtmlEncode(Username)
‘ver * no final

Password = Server.HtmlEncode(Password)
‘ver * no final

InfoValida = 1
‘Aqui criamos uma variavel que nos diz que o campo
tem o tamanho ‘correcto

End If

Function Login()

‘Aqui o programador
pode colocar o codigo de validacao do visitante por
exemplo.

End Function

If InfoValida =
1 Then ‘Se o tamanho estiver correcto

Call Login()
‘Chamos a funcao Login para dar continuidade a pagina

Else ‘Se nao
estiverem correctos

Response.Write(“por
favor insira dados correctos nos campos de login.”)

‘Mostramos esta
msg ao visitante

End If

‘O Server.HTMLEncote
serve para substituir por exemplo < ou > por codigo
HTML de ‘forma a que o visitante do site nao possa executar
codigo atraves do input, isto para ‘alem de outras funcoes
que nao tem muito interesse para este exemplo.

%>

No código ASP foi usado:

Function();

Len()

Server.HTMLEncode();

É claro que nunca podemos ficar 100%
seguros contra um ataque “hacker” a um website nosso,
mas podemos melhorar sempre a segurança das nossas páginas.

Um abraço! Qualquer dúvida,
nobrains@netcabo.pt

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Mais de Redação iMasters
Ver perfil →