从安全角度来看,使用os
代码通常被认为是不好的做法,因为它可能会为phenomenal cosmic powers提供一个bad actor。尽管如此,大多数来源似乎建议使用以下方法来获取env
变量
import os
print(os.environ['FOO'])
这里也建议使用这种方法,例如在“How to access environment variable values?”中,我知道可以使用dotenv拾取.env
文件并创建新的env
变量,但我无法找到任何现有的env
变量
这使我想到以下问题
os
安全性是否足以使我的担忧变得不必要李>from os import environ
比整个import os
好吗李>os
李>非常感谢
事实并非如此。即使“os代码”只是指Python的
os
模块,而不是系统调用(请参阅UNIX系统上man 2
的输出)。你应该停止阅读(或观看)任何给你留下这种印象的东西如果使用不当,有一些功能可能会带来安全风险。当传递单个字符串作为要运行的命令时,最臭名昭著的是
os.popen()
。以这种方式使用时,字符串由子shell进行解释,并受到“单词扩展”和“单词拆分”的影响。在像bash这样的POSIX shell中,这是有风险的,除非您100%确定原始字符串中可能存在的任何shell元字符或任何变量扩展的值除了在映射中不存在键(env var名称)时引发的异常之外,
os.environ
绝对没有任何风险。这就是为什么您通常应该使用os.getenv()
,因为这样可以更容易地处理不存在env var的情况相关问题 更多 >
编程相关推荐