Mi sitio utiliza marcadores para recopilar datos de sitios externos, como Pinterest. Me preocupa la seguridad y quiero mover las imágenes que el bookmarklet recopila desde la raíz del documento hacia arriba un nivel. Mi secuencia de comandos tiene algunos controles de seguridad importantes, pero quiero agregar esto como una última línea de defensa.

¿Cómo accedo a mis imágenes dentro de mi script? Obviamente, usar ../userimages/id/image.jpg no funcionará. Estoy usando Apache.

¡Gracias!

1
Paul Dessert 8 dic. 2011 a las 12:23
¿Acceso dentro del script? ¿O del HTML? PHP aún debería verlos si los saca de la raíz del documento, pero el navegador, por supuesto, no puede.
 – 
Thilo
8 dic. 2011 a las 12:28
Si usa dominios diferentes, debe usar domain.com/userimages/id/image.jpg. Creo que lo ves y, por lo tanto, no estoy seguro de entender por qué no funciona ../userimages/id/image.jpg.
 – 
Anthony
8 dic. 2011 a las 12:29
Me refiero al HTML. Mi secuencia de comandos extraería las imágenes de la raíz del documento externo y las enviaría al navegador. No estoy seguro de estar haciendo la pregunta correcta, pero alguien recomendó que mueva todas las imágenes fuera de la raíz del documento para reforzar la seguridad.
 – 
Paul Dessert
8 dic. 2011 a las 12:41

1 respuesta

La mejor respuesta

Proxy la imagen

Usaría un script proxy para alimentar las imágenes como en el siguiente ejemplo:

// open the file in a binary mode
$name = '../userimages/id/image.jpg';
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// you  may like to set some cache headers here

// dump the picture and stop the script
fpassthru($fp);
exit;

Este ejemplo es de la página de manuales fpassthru() de PHP. Guardaría este script en algún lugar de la raíz del documento de su servidor / carpeta httpdocs.

"Suplantar" la URL de la imagen

La forma más fácil de darle al archivo PHP la apariencia de un archivo de imagen para un usuario / navegador es usar Apaches mod_rewrite. Por lo general, uso una estructura de URL similar a esta:

http://www.example.org/image-id/image.png

Donde image-id es el identificador único para esa imagen en particular. De esta forma, el archivo tiene las extensiones correctas de una imagen en lugar de .php.

0
Treffynnon 8 dic. 2011 a las 13:06
Entonces, en el ejemplo anterior, ¿$ name puede estar fuera de la carpeta doc root / httpdocs?
 – 
Paul Dessert
8 dic. 2011 a las 14:57