📝 Add security best practice note for subprocess shell execution

This commit is contained in:
2026-05-24 00:17:40 +08:00
parent 0e662294db
commit bf24ba14b3
2 changed files with 27 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env python3
import glob
from pathlib import Path
if __name__ == '__main__':
files = glob.glob("*su*.py")
print(files)
for file in files:
print(f"- {file}")
# iglob 返回的是一个生成器(Generator)。它采用“惰性求值”,
# 只有在你循环遍历它时,它才会去查找下一个文件,极大地节省了内存。
print("-" * 100)
for file in glob.iglob("*su*.py", recursive=True):
print(f"- {file}")
print("-" * 100)
base_dir = Path(".")
# 查找所有的 *su*.py 文件(pathlib 默认支持递归用 rglob
for path in base_dir.rglob("*su*.py"):
print(f"- {path.name} --> {path.absolute()}")
+4
View File
@@ -43,6 +43,10 @@ if __name__ == "__main__":
- Shell 内置命令:有些命令(如 Windows 的 dir, copy 或 Linux 的 export)并不是独立的可执行文件,
而是 Shell 的内置命令。如果不设 shell=True,Python 会报错找不到文件。
- 通配符展开:比如 "rm *.txt"
IMPORTANT:
不得不用的情况:如果必须要用 shell=True(比如必须调用系统内置命令),且涉及用户输入,
务必使用 shlex.quote()Linux/macOS)对用户输入进行转义过滤。
"""
subprocess.run(
'echo ">>>>>>>>>>>>" && env && echo "<<<Hello World!>>>"',