Pregunta

Estoy desarrollando una pequeña aplicación CGI (en C, con CGIC, http: //www.boutell .com / CGIC / ). Mi aplicación necesita crear un temporal ARCHIVO (el usuario cargar una imagen, ésta se guarda, modificar de varias maneras, y a continuación, se muestra de nuevo al usuario).

¿Qué precauciones debo tomar al crear archivos temporales?

La imagen modificada se proporciona de forma dinámica por un script CGI que entonces elimina el archivo temporal del disco:

Algo así: <html><head><title>here's your modified image</title></head><body><img src="cgi-bin/genimage.cgi?uid=5423423 /></body>

Sin embargo, un usuario malintencionado podría subir una imagen y nunca pedir la imagen modificada, por lo que llenar el disco duro.

¿Debo eliminar los archivos no utilizados periódicamente?

Muchas gracias!

¿Fue útil?

Solución

Si el espacio de almacenamiento es finita y tiene una cantidad desconocida de datos que entran, tendrá que decidir qué hacer cuando hay más datos que puede almacenar. Que se van a plantear de una manera u otra. Si usted pretende proporcionar un almacenamiento ilimitado, habrá una denegación de servicio cuando no se puede.

Cualquier estrategia probablemente cae en los dos (3, si es posible) las formas siguientes:

Cuando más de marca de agua alta,

  1. soltar los datos más antiguos / menos buscados para hacer espacio
  2. soltar datos entrantes para evitar que se llene
  3. hacer una pausa en los datos entrantes hasta que de nuevo debajo de la marca de agua baja

2 y 3 todavía tendrá que encontrar un nuevo almacenamiento de alguna manera, ya sea por lo que algo va a tener que ser eliminado o que necesitará más espacio de almacenamiento. 1 es bastante auto-mantenimiento, pero puede ser posible eliminar todos los datos antiguos útiles fuera de él mediante el envío de nuevo lo suficiente basura. Haciendo un sistema de clasificación (última consulta, más visitada, cargado por el usuario privilegiado, combintion de esos ...) y eliminar el menos importante puede ser la mejor equilibrado.

Otros consejos

Uso de CGI para el diseño de la aplicación directa es cuestionable - es decir, no un web-marco / app-motor. Yo sugeriría el uso de Java para su manipulación de la imagen, o envolverlo en lua o pitón o algo así.

Si continúa con C asegúrese de poner restringir el entorno de ejecución de CGI, lo puso en una cárcel, comprobar este post a cabo un poco de inspiración, aquí es otro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top