Pau escribió:
Hola a todos.
Tengo un proyecto en el que la mayor parte de la web necesita SSL. Lo
tengo configurado para que todas las URL se redirijan a https://midominio.com,
pero ahora necesito que algunas vistas no se encripten con el SSL. La
razón es que en ciertas vistas hay componentes externos al web server
que no se encriptan y el IE siempre muestra un mensaje de diciendo que
ciertos elementos podrían comprometer la seguridad. Paradógicamente
uno de esos elementos es el sello de seguridad de del certificado ssl.
La intención es dejar fuera de la encriptación esas páginas para que
no aparezca el dichoso mensaje.
¿Alguien sabe como excluir ciertas páginas del SSL? La idea es hacerlo
con los ficheros .htaccess de apache, pero no tengo claro como
hacerlo.
Saludos y gracias de antemano.
Pau.

Ya lo he solucionado. Pero es una solución mixta htaccess y Cake.
Lo primero ha sido quitar del htaccess las lineas que forzaban ssl para todo el dominio.

#SSLOptions +StrictRequire
#SSLRequireSSL
#SSLRequire %{HTTP_HOST} eq "midominio.com"


En Cake utilizo el componente Security para requerir SSL en todas las acciones menos en las vistas que no lo quiero:

En todos los controllers en el beforeFilter:

if (env('SERVER_NAME')!='localhost'){
$this->Security->blackHoleCallback = 'forceSSL'; //forceSSL será llamado si la URL no contiene https $this->Security->requireSecure(); //Aqui va la lista de acciones que requieren ssl
}

function forceSSL() {
          $this->redirect('https://' . env('SERVER_NAME') . $this->here);
}

En las funciones que generan las vistas en las que no queremos SSL debemos comprobar que no se les llama con https y si ese es el caso cambiar a http.

function seg(){ if (env('SERVER_PORT') == 443){ //El puerto 443 es usado por SSL, es la forma de detectar https $this->redirect('http://' . env('SERVER_NAME') . $this->here); //redirecionamos a la misma url pero con http
     }
     .....
}

Cuando se mezclan elementos cifrados y no cifrados en una misma vista, en mi caso porque proceden de otras webs, el IE muestra un mensaje diciendo que se compromete la seguridad , lo que no da buena imagen en una web en la que la seguridad en las transacciones es algo fundamental.

Espero que le sirva a alguien.
Saludos.
Pau.



--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos 
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a 
cakephp...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a 
cakephp-es+unsubscr...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en 
http://groups.google.com/group/cakephp-es?hl=es.

Responder a