Question

Eh bien, il est une sorte d'un serveur Web.

Je charge les fichiers .dll (.a) et de les utiliser en tant que modules du programme.

Je vais récursive dans les répertoires et mettre « _main » foncteurs de ces bibliothèques dans std :: carte sous le nom, qui est membré dans les fichiers « .m » spéciaux.

Le répertoire principal a quelques répertoires pour chaque hôte.

Le problème est que je dois éviter l'utilisation de « fopen » ou tout autre système de fichiers fonctions de travail avec le répertoire en dehors de ce répertoire hôte.

La seule façon que je peux voir à ce sujet -. Écrire une chaîne pour stdio.h (je veux dire, écrire s_stdio.h qui a un chèque de nom de fichier)

Peut être que ce pourrait être un appel système deamon, attraper et identifier quelque chose?

Ajouter

Eh bien, et qu'en est-ce genre de situation: je télécharger seulement souses puis compiler directement sur mon serveur après avoir vérifié jusqu'à? Eh bien, c'est la seule manière que je trouvais (ayant tout à l'intérieur d'un espace d'adressage encore).

Était-ce utile?

La solution

En C ++ est faible niveau de langue et les DLL sont compilés en code machine qu'ils peuvent faire quoi que ce soit. Même si vous enveloppez les fonctions de la bibliothèque standard du code peut faire le système appelle directement, réimplémentant les fonctionnalités dont vous avez enveloppé.

Probablement la seule façon de bac à sable efficacement une telle DLL est une sorte de virtualisation, de sorte que le code est exécuté directement, mais pas dans une machine virtuelle.

La solution plus simple est d'utiliser un langage de plus haut niveau pour les modules chargeables qui devraient être sandbox. Certaines langues de haut niveau sont mieux sandboxing (Lua, Java), d'autres ne sont pas si bon (par exemple actuellement AFAIK il n'y a pas l'environnement officiel restreint mis en œuvre pour Python).

Autres conseils

Si vous êtes un chargement du module, vous pouvez effectuer une analyse statique du code pour vérifier ce qu'il appelle APIs, et refusent de lier si elle ne vérifie pas (si cela fait une sorte d'appel suspect du tout).

Cela dit, il est beaucoup de travail à faire, et pas très portable.

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