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
O desafio das APIs de pagamento instantâneo no backend moderno
Desafio das APIs | Pagar uma conta em segundos… conta de uma demanda que cresceu muito mais rápido do que os sistemas tradicionais conseguiam acompanhar.








Redação iMasters





