«

»

Nov 30

Print this Post

Redirecionando HTTP para HTTPS

Problema:

Quero forçar um usuário do website para HTTPS quando ele estiver entrando informaç0αo sensitiva.

Solução:

Dependendo em quais particulares variáveis CGI estiverem disponíveis, voce pode usar CFLOCATION.

Explicação detalhada:

O código abaixo verifica qual porta o usurário está e se não fôr 443 (tipicamente https), ele redireciona o cliente para o https.

Nota: a não ser que voce persista suas variáveis, quaisquer dados enviados via escopos FORM ou URL serão perdidos.


<cfif CGI.SERVER_PORT NEQ "443">
     <cflocation
          url="https://#cgi.server_name##cgi.script_name#?#cgi.query_string#"
          addtoken="no">
</cfif>

Colocando o código acima numa página .cfm, irá redirecionar para HTTPS (* veja comentários). Entretanto, se voce quiser somente algumas páginas selecionadas para estarem em HTTPS, voce poderia usar a função onRequestStart do Application.cfc para detectar o template e redirecionar de acôrdo.


<cfset httpsPage= "cart.cfm,login.cfm">
<cfif cgi.server_port NEQ 443 >
     <cfif (ListContains(
          httpsPage,GetFileFromPath(CGI.SCRIPT_NAME),",")) >
          <cflocation
          url="https://#cgi.server_name##cgi.script_name#?#cgi.query_string#"
          addtoken="no">
     </cfif>
</cfif>

* Comentário: Em alguns casos isso não funcionará. Se o diretório que voce está tentando acessar requerer uma conexão https, o servidor emitirá um erro de conexão antes de passar a requisição para o ColdFusion. Se este fôr o caso, esse código não terá efeito.

by Glyn Jackson
Versão em inglês: Adobe ColdFusion Cookbook

Permanent link to this article: http://ensina.me/coldfusion/redirecionando-http-para-https/

Leave a Reply