Archivo

Archivo para la Categoría "Web"

SSL. La página Web que está abriendo contiene tanto elementos seguros como no seguros.

14 enero 2010 Deja un comentario

Cuando trabajamos con páginas SSL es bastante molesto encontrarse con un mensaje del navegador indicando que “La página Web que está abriendo contiene elementos seguros como no seguros. ¿Desea mostrar los elementos no seguros?”

Este mensaje además de molesto – sale siempre – resulta cuanto menos “inquietante” y puede provocar que más de un usuario salga inmediatamente de nuestro sitio Web. Algo especialmente grave si se trata de un sitio web dedicado a la venta online.

¿Como evitarlo?. Para responder a esta pregunta lo primero que debemos saber en porque se está produciendo. Este mensaje se muestra cuando dentro de un entorno SSL (protocolo https) existe alguna petición http. Es decir, en nuestra página hay elementos apuntado a una URL absoluta con protocolo http. Estos elementos pueden ser imagenes, scripts, css …

Un ejemplo claro es cuando incluimos una pelicula flash en nuestra página, por defecto, el enlace incluye una redirección a la página de adobe para descargar el reproductor en el caso de que no lo tengamos instalado. Ese enlace es absoluto a través de http – por lo que provoca el molesto error.

Este sería un enlace a una pelicula flash tipico:

 

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 

codebase="http://download.macromedia.com/.../swflash.cab#version=5,0,0,0" 

width="516" height="76" id="ShockwaveFlash1">

	<param name="movie" value="mipelicula.swf"/>

	<param name="quality" value="high"/> 

	<param name="bgcolor" value="#000000"/>

</object> 

Este enlace no muestra ningún error cuando estamos sobre un entorno http – tipicamente el entorno de desarrollo -, pero cuando pasamos a un entorno https – producción – muestra el mensaje debido al enlace http://download.macromedia.com/…/swflash.cab#version=5,0,0,0 que contiene.

En este caso la solucion es sencilla, bastará con quitar el enlace http la etiqueta.

 

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 

width="516" height="76" id="ShockwaveFlash1">

	<param name="movie" value="mipelicula.swf"/>

	<param name="quality" value="high"/> 

	<param name="bgcolor" value="#000000"/>

</object>

Pero no siempre es tan fácil solucionar el error. Cuando no podemos o no queremos eliminar el enlace – por ejemplo un javascrit – tendremos que recurrir a otros métodos.

Por ejemplo, cuando utilizamos Google Analytics, tenemos que incluir el siguiente script en nuestra página.

	<script src="http://www.google-analytics.com/urchin.js" 

		type="text/javascript"></script>

En este caso necesitaremos programar una página intermedia – que se trasmita por https – y que realice la solicitud a la dirección http y devuelva el mismo contenido. En nuestro caso, utilizamos ASP.NET por lo que nuestra página es aspx – pero la idea es válida para cualquier entorno web php, jsp, RoR …

 

	<script src="GetScript.aspx" 

		type="text/javascript"></script>

Y nuestra página GetScript.aspx (debemos incluir una directiva using System.Net;):

 

 protected void Page_Load(object sender, EventArgs e)

 {

	string httpUrl = "http://www.google-analytics.com/urchin.js";

	WebRequest httpRequest = WebRequest.Create(httpUrl);

	WebResponse httpResponse = httpRequest.GetResponse();

	System.IO.Stream webStream = httpResponse.GetResponseStream();

	System.IO.StreamReader reader = 

		new System.IO.StreamReader(webStream );

	string html = reader.ReadToEnd();

	

	Response.Write(html); 

 }

En el caso de que la conexion salga a través de un servidor proxy:

 

 protected void Page_Load(object sender, EventArgs e)

 {

	string httpUrl = "http://www.google-analytics.com/urchin.js";

	WebRequest httpRequest =WebRequest.Create(httpUrl);

	

	// En el caso de utilizar un servidor proxy

	IWebProxy proxy = WebRequest.GetSystemWebProxy();

	if (proxy != null && proxy.Credentials != null)

	{

		httpRequest.Proxy = proxy; 

	}

	else

	{

		proxy = new WebProxy("<servidor proxy>:<puerto>");

		NetworkCredential credenciales = 

			new NetworkCredential("<usuario>", "<clave>");

		proxy.Credentials = credenciales;

		httpRequest.Proxy = proxy;

	}

	WebResponse httpResponse = httpRequest.GetResponse();

	System.IO.Stream webStream = httpResponse.GetResponseStream();

	System.IO.StreamReader reader = 

		new System.IO.StreamReader(webStream);

	

	string html = reader.ReadToEnd();

	Response.Write(html); 

 }

Finalmente, si lo que queremos es “rizar el rizo”, en lugar de utilizar una página – que entre otros inconveniente tiene que ejecuta su ciclo de vida completo – sería mejor utilizar un manejador http.

Para eso, creamos nuestro propio manejador de peticiones como se muestra a continuación.

 

<%@ WebHandler Language="C#" Class="Handler" %>

 

using System;

using System.Web;

using System.Net;

 

public class Handler : IHttpHandler {

 public void ProcessRequest (HttpContext context) 

 {

	context.Response.ContentType = "text/javascript";

	context.Response.Write(GetData()); 

 }

 private string GetData()

 {

	string httpUrl = "http://www.google-analytics.com/urchin.js";

	WebRequest httpRequest = WebRequest.Create(httpUrl);

	// En el caso de utilizar un servidor proxy

	IWebProxy proxy = WebRequest.GetSystemWebProxy();

	if (proxy != null && proxy.Credentials != null)

	{

		httpRequest.Proxy = proxy;

	}

	else

	{

 

		proxy = new WebProxy("<servidor proxy>:<puerto>");

		NetworkCredential credenciales = 

			new NetworkCredential("<usuario>", "<clave>");

		proxy.Credentials = credenciales;

		httpRequest.Proxy = proxy;

	}

	WebResponse httpResponse = httpRequest.GetResponse();

	System.IO.Stream webStream = httpResponse.GetResponseStream();

	System.IO.StreamReader reader = 

		new System.IO.StreamReader(webStream);

	string html = reader.ReadToEnd();

	

	return html;

 }

public bool IsReusable 

 {

	get {

	return false;

	}

 }

}

Luego definimos una extension de archivo – en nuestro caso jsx – , incluimos el manejador en el web.config y cambiamos el enlace de la página para que apunte a un recurso .jsx

 

 <httpHandlers> 

	<add verb="GET" path="*.jsx" validate="false" type="Handler"/>

 </httpHandlers>
	<script src="GetScript.jsx" type="text/javascript"></script>

Saludos,

Fuente: http://www.devjoker.com/contenidos/Articulos/410/La-p%C3%A1gina-Web-que-est%C3%A1-abriendo-contiene-tanto-elementos-seguros-como-no-seguros.aspx

Categorías:Seguridad, SSL, Web Etiquetas: , ,

Manual imprescindible de PHP 5

16 diciembre 2009 Deja un comentario

http://4.bp.blogspot.com/_1CSkAVwljCc/RzIrE8RcyuI/AAAAAAAAAuY/3f3dEmRDp0U/s320/Frontphp5.jpg

PHP es unos de los lenguajes de creación de páginas Web dinámicas más utilizados del mercado. La quinta versión cuenta con innumerables mejoras que consolidan su éxito. Se ofrece la posibilidad de hacer programas orientados a objetos, lectura de archivos XML de forma sencilla, utilización de la base de datos ligera SQLite o la implementación de servicios Web.

Este se diferencia en varias partes: La primera sección se centra en los fundamentos para el desarrollo de programas, la segunda parte muestra los avances que han surgido en PHP 5, como la programación orientada a objetos, la conexión con las bases de datos MySQL y SQLite, la lectura de archivos XML, el envío de correo electrónico o la utilización del protocolo FTP, y la última división, orientada a usuarios avanzados, cuenta con la descripción de técnicas actuales de desarrollo. Estos últimos capítulos incorporan librerías que ayudan a la implementación de archivos RSS, servicios Web XML-RPC, generación de gráficos y plantillas con Smarty.

En definitiva, este libro cubre los aspectos básicos que debe dominar el desarrollador para llegar a ser un experto en PHP. Sus veinte capítulos recorren desde los aspectos más sencillos del lenguaje hasta los métodos más complejos de programación. Todo bajo una curva de aprendizaje gradual que permite seguir los ejemplos y asimilar los conceptos rápidamente.

Titulo: Manual imprescindible de PHP 5

Autor: Luis Miguel Cabezas Granado

ISBN: 84-415-1785-1

Número de páginas: 384

Contenido del Libro:

  • Cómo Usar este libro
  • Prólogo
  • Introducción
  1. Introducción a PHP 5
  2. Variables, constantes y tipos de datos
  3. Operadores
  4. Estructuras de control
  5. Funciones
  6. Cadenas de caracteres y expresiones regulares
  7. Conjuntos de datos del tipo array
  8. Paso de información entre formularios
  9. Programación orientada a objetos
  10. Ficheros y almacenamiento de datos
  11. Bases de datos con SQL y SQLite
  12. PHP 5 y MySQL
  13. Sesiones y Cookies
  14. Lectura y escritura de archivos XML
  15. Aplicaciones prácticas de XML
  16. Generación de gráficos con PHP 5
  17. Gestión de errores en PHP 5
  18. Conexiones desde PHP 5
  19. Creación de archivos PDF
  20. Plantillas con Smarty
  • Apéndice A. Instalación de PHP 5 y MySQL
  • Apéndice B. Configuración de php.ini
  • Apéndice C. Bibliografía

Descargar

Seguir

Get every new post delivered to your Inbox.