Comment utiliser en toute sécurité les sous-processus en Python ? Validez les entrées de l’utilisateur pour empêcher les attaques par injection. Utilisez des guillemets pour encapsuler les commandes afin de résister aux attaques par traversée de chemin. Restreindre l’accès au répertoire des processus enfants pour éviter les failles de sécurité. Utilisez shell=False pour désactiver l’exécution de toutes les commandes shell.
Comment utiliser les sous-processus en toute sécurité dans Python
Introduction
En Python, le module subprocess
fournit des fonctionnalités puissantes pour interagir avec d'autres processus. Cependant, il faut faire preuve de prudence lors de l'utilisation de sous-processus
pour éviter les risques de sécurité. Cet article vous guidera dans l'utilisation de subprocess
en toute sécurité et vous fournira un cas pratique. subprocess
模块提供了与其他进程交互的强大功能。但是,使用 subprocess
时需要谨慎操作,以避免安全隐患。本文将指导你安全使用 subprocess
,并提供一个实战案例。
安全隐患
使用 subprocess
的主要安全隐患包括:
subprocess
的路径可能会被操纵,以访问敏感文件或目录。安全实践
为了缓解这些安全隐患,请遵循以下最佳实践:
str.isalnum()
。cwd
参数,限制子进程可以访问的目录。shell=True
,因为它允许执行任意 shell 命令。实战案例
假设你想安全地使用 subprocess
来执行一个 Linux 命令,例如 ls -l
。以下是一个示例代码:
import subprocess # 验证输入 input_dir = input("请输入要列出的目录:") if not input_dir.isalnum(): print("无效目录名") exit(1) # 使用引号和限制路径访问 command = f"ls -l '{input_dir}' --color=auto" result = subprocess.run(command, shell=False, stdout=subprocess.PIPE) # 处理结果 if result.returncode == 0: print(result.stdout.decode()) else: print(f"错误:{result.stderr.decode()}")
在这个示例中,用户输入在使用 isalnum()
函数之前进行了验证。命令被包裹在引号中,并且 cwd
被设置为当前工作目录以限制子进程对文件的访问。
结论
通过遵循这些最佳实践,你可以安全地使用 Python 中的 subprocess
sous-processus
incluent : 🎜sous-processus
peut être manipulé pour accéder à des fichiers ou répertoires sensibles. str.isalnum()
. cwd
, limitez les répertoires auxquels les processus enfants peuvent accéder. shell=True
car cela permet d'exécuter des commandes shell arbitraires. subprocess
pour exécuter une commande Linux, telle que ls -l
. Voici un exemple de code : 🎜rrreee🎜 Dans cet exemple, la saisie de l'utilisateur est validée avant d'utiliser la fonction isalnum()
. La commande est entourée de guillemets et cwd
est défini sur le répertoire de travail actuel pour restreindre l'accès aux fichiers par le processus enfant. 🎜🎜🎜Conclusion🎜🎜🎜En suivant ces bonnes pratiques, vous pouvez utiliser en toute sécurité le module subprocess
en Python. Gardez toujours à l’esprit les risques potentiels pour la sécurité et prenez des mesures pour les atténuer. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!