2 votes

Compiler C++ en binaire avec PHP

J'ai un programme que les utilisateurs veulent télécharger. Au lieu de proposer un lien de téléchargement et qu'ils téléchargent le programme et saisissent les informations, je préfère que mon script PHP le fasse.

Mon site Web nécessite un nom d'utilisateur et un mot de passe pour se connecter. Il existe une page privée où l'utilisateur peut télécharger un fichier. Lorsqu'un utilisateur se rend sur la page de "téléchargement", il doit choisir des options spécifiques sur la page. Une fois que les options sont sélectionnées et que l'utilisateur clique sur "Télécharger", je veux que PHP aille dans la source de mon programme, ajoute les données manquantes à l'intérieur de la source, le compile dans un .exe, et le ramène à l'utilisateur.

Le problème, c'est que je ne sais pas du tout comment faire et j'ai peur que PHP mette les informations pour un utilisateur et qu'il donne accidentellement les informations de cet utilisateur à tous les autres.

Comment puis-je faire en sorte que chaque binaire soit différent ?

Je réalise actuellement mon programme sous Windows (en utilisant Code::Blocks) mais je vais héberger les fichiers sur un serveur Linux ou FreeBSD. Je voulais juste le faire savoir au cas où il y aurait quelque chose que je devrais savoir.

2voto

Alexander Duchene Points 301

Puisque vous autorisez en fait l'utilisateur à saisir un code arbitraire sur votre serveur, cela semble constituer un risque de sécurité sérieux. Pourquoi la personnalisation de l'exécutable est-elle nécessaire ? Pourrait-il s'agir d'un fichier de configuration ?

Si vous voulez aller de l'avant, cela peut être fait assez facilement. Utilisez peut-être un moteur de templates comme Mustache (pas les templates du langage C++). Ecrivez vos fichiers sources pour inclure ces templates Mustache.

Lorsque l'utilisateur a posté les informations, il vous suffit d'exécuter la commande pour appliquer le modèle afin d'obtenir le source fini, puis d'exécuter votre makefile pour générer l'exécutable fini. Ensuite, vous pouvez le donner comme n'importe quoi d'autre.

Si vous voulez vous assurer que les utilisateurs ne peuvent pas obtenir le même binaire, un moyen simple serait de supprimer l'exécutable terminé après chaque exécution. Il y a de meilleures façons de faire, mais celle-ci est facile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X