¿Qué precauciones deben tomarse cuando el archivo GET especifica el archivo mostrado por una página web?

3

Mi sitio web muestra algunos archivos basados en el valor de obtención en la URL. Por ejemplo, http://www.mysit.com/navigate.php?d=firstpage.html La cosa es que navigate.php sabe qué carpeta buscar y no está en el directorio raíz web. ¿Hay alguna precaución que deba tomar? Por ejemplo, ¿qué efecto tiene . o .. en una URL? Si un atacante ingresó a http://www.mysit.com/navigate.php?d=../topsecret , ¿podrían obtener acceso no autorizado?

    
pregunta Celeritas 08.05.2013 - 22:09
fuente

2 respuestas

4

Debes asegurarte de ponerle un filtro adicional para asegurarte de que no intente cosas así. Personalmente, como mínimo, intentaría analizar y reformar la entrada y asegurarme de que no se produzcan operaciones como cambios de directorio.

Una mejor opción sería almacenar los nombres de archivo en una base de datos y pasar un token simple que podría usarse para buscar el nombre de archivo a usar. Esto podría filtrarse para cualquier entrada que no se ajuste a lo que se necesita para sus tokens. También podría permitir que su sitio funcione sin tener que actualizar la información GET, a menos que desee específicamente eso para vincular la funcionalidad.

    
respondido por el AJ Henderson 08.05.2013 - 22:12
fuente
1

Para responder a su pregunta, todo depende de cómo su sitio trate el parámetro de entrada. Si, como se mencionó, es posible cambiar el directorio usando la entrada, entonces sí.

Los parámetros GET simplemente terminan como cadenas cuando llega al php; No está enviando comandos especiales como lo haría en una interfaz de línea de comandos (a menos que esté codificado de esa manera en el PHP).

    
respondido por el Hintron 09.05.2013 - 06:01
fuente

Lea otras preguntas en las etiquetas