Uno de los problemas que podemos sufrir a la hora de recibir penalizaciones en nuestro sitio puede ser debido a dejar algunas partes de nuestro sitio web abierto.
¿Qué significa esto? Pues que a través de nuestro sitio web se pueda reenviar tráfico a otra página. Por ejemplo, nos podríamos encontrar una situación habitual, como:
example.ext/go.php?url=http://website.ext
Hay que controlar este tipo de redirecciones, sobretodo si se hace un abuso externo, y se puede hacer dentro de los resultados de búsqueda (con una consulta con el parámetro site:), se puede revisar dentro de las herramientas de los buscadores y también es recomendable realizar consultas en los propios logs del servidor por si se encuentra algún parámetro que incluya http.
Recuerda que estas redirecciones es mejor que estén filtradas, ya sea a través del fichero robots.txt o incluso teniendo una serie de listas blancas que, cuando se pase una dirección el software la revise y deje seguir o no.
Yo añadiría que es una medida de seguridad imprescindible. Yo lo descubrí desafortunadamente porque un día nos dimos cuenta que desde mi cuenta de hosting se estaban enviando miles y miles de emails!! me di cuenta porque cada día me llegaban decenas de emails «devueltos» porque la dirección de destino ya no existía!
El problema estaba en que utilizo en mis aplicaciones una URL de este tipo:
index.php?pag=quienes-somos
en donde la variable pag servía para que la aplicación recuperara el contenido del archivo «quienes-somos.htm». Pues resulta que de algún modo (aún no he entendido como hacerlo yo mismo) los spammers escribían algo así como:
index.php?pag=http://servidor.spamer.com/enviar-spam
y el efecto es que MI SERVIDOR DE CORREO enviaba el spam. Increíble pero cierto. Así que si alguine sabe de algún artículo que expliquen el cómo esto puede ser posible que me lo remita aquí, please … me muero de curiosidad.
Pero en fin, de toda formas, que sepais que es importante para la seguridad! Ah, y en mi caso simplemente puse un parche en PHP al inicio del archivo index.php:
if (strtolower(substr($_GET[‘pag’],0,5))==’http:’) return;
Un saludo,
SERGI R.
caos30,
tu problema esta en hacer un include directamente desde la variable obtenida por $_GET sin filtrar el contenido de esa variable, ya que si en la variable añaden una url externa el include añade esa ruta i por lo tanto el script malicioso del spamer.
Para ahcer el include no es recomenfable usar la variable obtenida por $_GET.
Gracias Marc por responder,
pero la verdad es que no hago un INCLUDE, sino que -por seguir con el ejemplo- mi URL es del tipo:
index.php?pag=quienes-somos
entonces el index.php lo que hace es un fopen() y posteriores fgets() para leer linea a linea el codigo de un archivo html y hacer después un simple echo. Es decir, que no hago un ‘include()’ !!! no entiendo como pueden ejecutar código externo 😐
Además, sucede que dada la URL anterior, el archivo que abro con fopen() es del tipo:
/directorio_de_paginas/quienes-somos.htm
es decir, le añado un prefijo: ‘/directorio_de_paginas/’
y le añado un sufijo: ‘.htm’
Así que no entiendo como puede ser un problema una url de posibles spammers como:
index.php?pag=http://servidor.spamer.com/enviar-spam
No sé si me explico? 😉
SERGI R.
Para ver exactamente como añaden el script tendrias que revisar los logs de tu servidor para ver que valor le dan al parametro pasado por GET.
De todas formas uses include(más eficiente en este caso) o fopen, el problema reside en utilizar directamente para añadir código la variable entrada por GET , y además sin parsear.