«

»

Jan 09

Print this Post

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


Permanent link to this article: http://ensina.me/coldfusion/previnindo-falsificacao-de-formularios-e-dupla-submissao/

Leave a Reply