📝 Add security best practice note for subprocess shell execution
This commit is contained in:
@@ -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()}")
|
||||
@@ -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!>>>"',
|
||||
|
||||
Reference in New Issue
Block a user