Nous avons une application mvc asp.net interne et externe face à mono sur Ubuntu 10.04 LTS. Il existe également une application de ligne de commande compliquée (native, non mono) que les utilisateurs utilisent sur le même serveur. Ils se connectent via ssh pour ce faire. Nous avons la sécurité pour les utilisateurs SSH assez verrouillé, donc ils ne peuvent pas faire grand-chose d'autre que d'exécuter l'application en ligne de commande.exécuter en toute sécurité linux ligne de commande app de asp.net mvc app sous mono
Les utilisateurs de ces applications doivent:
- connexion via ssh sur le serveur, lancez l'application en ligne de commande avec tout ce que les commutateurs de ligne de commande sont nécessaires, qui fait alors un certain traitement à long en cours d'exécution et met un rapport dans la db de l'application web.
- Connectez-vous à l'application Web, puis définissez des options pour la publication d'un rapport via l'application Web.
Les utilisateurs des applications veulent ignorer l'étape 1 et tout faire dans l'application Web. Je pense à la création d'un service qui interroge régulièrement la base de données pour les travaux d'application de ligne de commande à exécuter. Les emplois seraient créés par les utilisateurs comme souhaité dans l'application Web.
Le problème est, les utilisateurs veulent une boîte dans l'application Web où ils peuvent simplement remplir toutes les options de ligne de commande. Mais je ne veux pas qu'ils fassent quelque chose comme ceci:
-a dothis -b dothis & rm importantfile.txt
... dans le cas où les informations d'identification de l'utilisateur à l'application Web sont en quelque sorte compromis. Je veux m'assurer que seule cette application en ligne de commande peut être utilisée et rien d'autre. Je pense à empêcher les caractères ! | < > &/\ $ ()
d'être autorisés, ce qui semble ne pas être requis par l'application en ligne de commande.
Est-ce suffisant? Y a-t-il d'autres trucs de shell que je devrais connaître? Devrais-je adopter une approche différente? Je ne veux vraiment pas avoir à écrire une sorte d'analyseur pour les arguments fournis par les utilisateurs, car il y en a une tonne que les utilisateurs aiment utiliser.
Oh oui. Je me sens un peu stupide maintenant :) Je peux certainement le lancer comme un processus. Je ne peux pas croire que je n'y ai pas pensé plus tôt ... – simon