在没有操作系统的情况下,如何访问环境变量值?

2024-04-28 05:46:29 发布

您现在位置:Python中文网/ 问答频道 /正文

从安全角度来看,使用os代码通常被认为是不好的做法,因为它可能会为phenomenal cosmic powers提供一个bad actor。尽管如此,大多数来源似乎建议使用以下方法来获取env变量

import os
print(os.environ['FOO'])

这里也建议使用这种方法,例如在“How to access environment variable values?”中,我知道可以使用dotenv拾取.env文件并创建新的env变量,但我无法找到任何现有的env变量

这使我想到以下问题

  • Python的os安全性是否足以使我的担忧变得不必要
  • from os import environ比整个import os好吗
  • 有没有一种方法更安全,并且完全避免os

非常感谢


Tags: 方法代码importenvos来源environ建议
1条回答
网友
1楼 · 发布于 2024-04-28 05:46:29

I was saying that, in general, it is advised to avoid using operating system code for security reasons.

事实并非如此。即使“os代码”只是指Python的os模块,而不是系统调用(请参阅UNIX系统上man 2的输出)。你应该停止阅读(或观看)任何给你留下这种印象的东西

如果使用不当,有一些功能可能会带来安全风险。当传递单个字符串作为要运行的命令时,最臭名昭著的是os.popen()。以这种方式使用时,字符串由子shell进行解释,并受到“单词扩展”和“单词拆分”的影响。在像bash这样的POSIX shell中,这是有风险的,除非您100%确定原始字符串中可能存在的任何shell元字符或任何变量扩展的值

除了在映射中不存在键(env var名称)时引发的异常之外,os.environ绝对没有任何风险。这就是为什么您通常应该使用os.getenv(),因为这样可以更容易地处理不存在env var的情况

相关问题 更多 >