Previnindo falsificação de formulários e dupla submissão
Problema:
Qualquer formulário (desprotegido) no seu website pode estar vulnerável à postagem vinda de computadores de maliciosos usuários, e num simples exemplo, a dupla postagem por um usuário.
Solução:
Definindo uma variável de sessão quando o formulário é carregado, previne que a página encarregada do manuzeio do formulário seja chamada por outra que não seja a página intencionada e evita que o usuário submeta duplamente o formulário inadivertidamente.
Explicação detalhada:
Submeta um formulário, e então tente recarregar (refresh) a página de processamento, e então tente usar o botão "back" do browser para voltar e resubmeter o formulário. O formulário estará disponível para submissão se chamado (ou recarregado) da página intencionada.
MoreSecureForm.cfm<html>
<head>
<title>Untitled</title>
</head>
<body>
<form action="moreSecureFormProcess.cfm" name="moreSecureForm" method="POST">
<input type="Text" name="testfield">
<cfset session.formName="moreSecureForm">
<input type="submit" value="Click!">
</form>
</body>
</html>
MoreSecureFormProcess.cfm
<html>
<head>
<title>Untitled</title>
</head>
<body>
<cfif IsDefined("form.testfield")>
<cfoutput>
The value of your text field was :"#form.testfield#"<P>
</cfoutput>
<cfif IsDefined("session.formName") and session.formname eq "moreSecureForm">
<!--- we know the form has been submitted from the
original more secure form page so continue form processing--->
Session variable matches, so process form.<p>
<!--- process here --->
....processing ...<br>
<!--- now delete the session variable to prevent resubmission--->
... done processing, tidy up.
<cfset StructDelete(Session, "formName")>
<cfelse>
<!--- No session variable found corresponding to
calling form name. Form is either spoofed or has
already been submitted --->
This form has either already been submitted or is being called from
the wrong page.
</cfif>
</cfif>
</body>
</html>
by Saleuve
Versão original em inglês: Adobe ColdFusion Cookbook
0 responses to “Previnindo falsificação de formulários e dupla submissão”