Question

Je développe avec CGIC, une petite application CGI (en C, http: //www.boutell .com / cgic / ). Mon application a besoin de créer un temporaire fichier (l'utilisateur télécharger une image, il est enregistré, modifié de diverses manières, et puis montré à l'utilisateur).

Quelles précautions dois-je prendre tout en créant des fichiers temporaires?

L'image modifiée est fourni dynamiquement par un script CGI qui enlève alors le tempfile à partir du disque:

Quelque chose comme ça: <html><head><title>here's your modified image</title></head><body><img src="cgi-bin/genimage.cgi?uid=5423423 /></body>

Toutefois, un utilisateur malveillant peut télécharger une image et ne jamais demander l'image modifiée, de sorte que le remplissage du disque dur.

Dois-je supprimer les fichiers inutilisés périodiquement?

Merci!

Était-ce utile?

La solution

Si votre espace de stockage est finie et vous avez une quantité inconnue de données provenant, vous aurez besoin de décider quoi faire quand il y a plus de données que vous pouvez stocker. Cela viendra d'une façon ou d'une autre. Si vous prétendez fournir un stockage illimité, il y aura un DoS quand vous ne pouvez pas.

Toute stratégie tombe probablement dans les deux (3, si possible) comme suit:

Quand plus hautes eaux,

  1. déposer les plus anciennes / données moins voulu faire de la place
  2. déposer les données entrantes pour ne pas devenir complet
  3. pause jusqu'à ce que les données entrantes en dessous des basses eaux

2 et 3 aura encore besoin de vous pour trouver un nouveau stockage en quelque sorte, si quelque chose va soit être supprimé, ou vous aurez besoin de plus de stockage. 1 est assez auto-entretenu, mais il peut être possible de vider toutes les données anciennes utiles sur en envoyant suffisamment de nouveaux déchets. Création d'un système de classement (dernier accès, plus accessible, chargé par l'utilisateur privilégié, combintion des personnes ...) et la suppression moins importante peut être la meilleure chose équilibrée.

Autres conseils

Utilisation de CGI pour la conception de l'application directe est sujette à caution - à savoir, pas un framework web / app-engine. Je suggère d'utiliser Java pour votre manipulation d'images, ou l'envelopper dans Lua ou Python ou quelque chose.

Si vous continuez avec C assurez-vous que vous mettez restreindre l'environnement d'exécution de CGI, le mettre dans une prison, consultez ce poste pour un peu d'inspiration, est un autre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top