风险与安全对比
风险与安全对比
风险:os.system('ping -c 1 ' + ip)
安全:subprocess.run(['ping', '-c', '1', ip], check=True)
参数数组方式不经过 shell,元字符失去特殊含义输入校验补充(Python)
输入校验补充(Python)
import ipaddress
try:
ip = str(ipaddress.ip_address(user_input))
except ValueError:
raise ValueError('invalid ip')
# 允许的输入域越窄(IP、域名、枚举值),风险面越小必须使用 shell=True 时,需要自行完成整体引用转义,出错概率高,应尽量避免。