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.
Versão em inglês: Adobe ColdFusion Cookbook
0 responses to “Redirecionando HTTP para HTTPS ”