Python 2 中使用的“input”函数¶
ID: py/use-of-input
Kind: problem
Security severity: 9.8
Severity: error
Precision: high
Tags:
- security
- correctness
- security/cwe/cwe-94
- security/cwe/cwe-95
Query suites:
- python-code-scanning.qls
- python-security-extended.qls
- python-security-and-quality.qls
在 Python 2 中,对 input()
函数的调用,input(prompt)
等效于 eval(raw_input(prompt))
。在没有任何检查的情况下评估用户输入可能是一个严重的安全漏洞。
建议¶
使用 raw_input(prompt)
获取用户输入,然后在评估之前验证该输入。如果预期输入是数字或字符串,则可以始终安全地使用 ast.literal_eval()
。
参考资料¶
Python 标准库:input,ast.literal_eval.
维基百科:数据验证.