Si bien se puede implementar el encabezado a nivel de servicio web agregando en la configuración de las diferentes plataformas (Apache, IIS, nginx y otros) un "header", a veces es mucho más práctico agregar la cabecera directamente a nivel de aplicación o en las rutinas específicamente sensibles.
Cómo el vídeo no nos muestra el código para ello a continuación algunos ejemplos en diferentes lenguajes y/o plataformas:
Implementación en PHP.
// Usar HTTP Strict Transport Security para forzar al cliente a usar // conexiones seguras
$use_sts = true; // iis sets HTTPS to 'off' for non-SSL requests if ($use_sts && isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { header('Strict-Transport-Security: max-age=31536000'); } elseif ($use_sts) { header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true, 301); // we are in cleartext at the moment, prevent further execution and output die(); }
Implementación en Perl CGI.
# Usar HTTP Strict Transport Security para forzar al cliente a usar # conexiones seguras
use CGI; use URI; my $q = new CGI; my $url = URI->new($cgi->request_uri) my $use_sts = 1; if ($use_sts and $url->scheme eq 'https') { print $q->header('Strict-Transport-Security' => 'max-age=31536000'); } elsif ($use_sts) { $url->scheme('https'); print $q->redirect(status => 301, location => $url); }
Implementación en Ruby on Rails.
class ApplicationController < ActionController::Base before_filter :ensure_proper_protocol private def ensure_proper_protocol if request.ssl? response.headers['Strict-Transport-Security'] = 'max-age=31536000' else redirect_to "https://" + request.host + request.request_uri, :status => 301 end end end
// Usar HTTP Strict Transport Security para forzar al cliente a usar // conexiones segurasprotected void Application_BeginRequest() { switch (Request.Url.Scheme) { case "https": Response.AddHeader("Strict-Transport-Security", "max-age=31536000"); break; case "http": var path = "https://" + Request.Url.Host + Request.Url.PathAndQuery; Response.Status = "301 Moved Permanently"; Response.AddHeader("Location", path); break; } }
Implementación en ColdFusion Markup Language (CFML).
<!--- Usar HTTP Strict Transport Security para forzar al cliente a usar conexiones seguras --->
<cfset use_sts = true> <cfif use_sts is "True"> <cfif cgi.https is "on"> <cfheader name="Strict-Transport-Security" value="max-age=31536000"> <cfelse> <cfheader statuscode="301" statustext="Moved permanently"> <cfheader name="Location" value="https://" + CGI.SERVER_NAME + CGI.SCRIPT_NAME + CGI.QUERY_STRING> </cfif> </cfif>
Implementación en JavaServer Pages (JSP) o Java Servlets.
// Usar HTTP Strict Transport Security para forzar al cliente a usar // conexiones segurasboolean use_sts = true; if(use_sts) { if(request.getScheme().equals("https")) { // Send HSTS header response.setHeader("Strict-Transport-Security", "max-age=31536000; includeSubdomains"); } else { // Redirect to HTTPS response.setStatus(301); String url = "https://" + request.getServerName(); if(request.getPathInfo() != null) { url = url + "/" + request.getPathInfo(); } if(request.getQueryString() != null && request.getQueryString().length() > 0) { url = url + "?" + request.getQueryString(); } response.setHeader("Location", url); } }
Espero les sea suficientemente útil y como podrán apreciar no es nada complicado.
No hay comentarios.:
Publicar un comentario