2010-05-06 3 views
1

Actuellement, j'utilise dirent.h et ftw.h pour la traversée de répertoire sur mon site Web CGI 100% programmé en C. Je ne suis pas sûr si elles sont sécurisées; Est-ce que différents utilisateurs interfèreraient les uns avec les autres sur mon site?Quels en-têtes C pour la traversée de répertoires sont sécurisés sous Linux?

Quelles fonctions recommanderiez-vous à cet effet?

+1

Qu'entendez-vous par sécurité des processus? –

+1

Si vous voulez dire qu'ils sont sûrs d'utiliser simultanément de multiples processus, oui, ils le sont. – WhirlWind

+0

Oui, exécutez plusieurs processus simultanément. –

Répondre

1

Il est sûr que plusieurs processus utilisent, par exemple, ftw() pour parcourir la même arborescence de répertoires en même temps.

Cependant il est pas nécessairement sans danger pour un processus à marcher l'arborescence tandis qu'un autre processus est mise à jour la même structure d'arborescence (par exemple ajouter, supprimer ou renommer des répertoires). Si vous avez cette situation, vous devrez faire en sorte que vos processus CGI utilisent un verrou flock() (vous pouvez avoir un seul fichier de verrouillage vide à la racine de l'arborescence de répertoires partagée), les processus qui veulent marcher dans l'arborescence doivent prendre un partage partagé. verrouiller sur ce fichier de verrouillage, et les processus qui veulent modifier l'arbre doivent prendre un verrou exclusif sur le fichier de verrouillage).

0

Vous voulez probablement dire "thread-safe" au lieu de process-safe. Tous les appels libc sont sécurisés sous Linux car les processus (normalement) vivent dans des espaces mémoire distincts. En revanche, readdir n'est pas adapté aux threads, car il conserve un stockage statique interne pour le contexte. Utilisez readdir_r dans ce cas (le _r signifie réentrant). Les autres fonctions de dirent.h sont réentrantes par défaut.

+0

Il semble réellement signifier * processus * sûr, étant donné le contexte de s'inquiéter de différents utilisateurs exécutant le même script CGI (ce qui signifie généralement des processus différents, sauf si FastCGI est impliqué). –

+0

Oui, processus sûr. Juste CGI normal, pas FastCGI. –

+0

Eh bien dans ce cas, aucune raison de s'inquiéter, car toutes les fonctions de la bibliothèque sont sécurisées. Bien sûr, les utilisateurs peuvent toujours interférer si un processus écrit un fichier et qu'un autre processus lit le même fichier, mais ce n'est pas ce que vous faites. – wump

Questions connexes