【问题标题】:How to skip over a environment variable when iterating over them迭代环境变量时如何跳过它们
【发布时间】:2022-09-23 20:52:01
【问题描述】:

这是我的代码:

import os

def main():
  g = input(\"What\'s the password?\\n\")
  if g == os.environ[\'master-password\']:
    for name, value in os.environ.items():
      if name == \"master-password\":
        break #obviously just ends the program
      else:  
        print(\"{0}: {1}\".format(name, value))
      
main()

我想跳过主密码,以免泄露。 我想要这个的原因是我正在使用 replit

  • Break 存在循环,而不是结束程序。碰巧你的程序在循环之后什么都不做。
  • 任何运行脚本的人都可以看到它接收到的环境。如果他们想查看主密码,他们可以。
  • @chepner 这看起来像一个玩具程序,所以这可能不是重点。此外,谁知道呢,OP 可以在他们控制的容器中运行它,标准输入/标准输出连接到 TTY 或诸如此类的东西。
  • 尽管如此,如果用户可以从os.environ 读取它,这意味着它不是一个秘密值。
  • @matszwecja 那是...题外话。用户也可以修改此脚本以不进行检查。

标签: python


【解决方案1】:

使用continue 而不是break 跳到循环的下一个迭代。

g = input("What's the password?\n")
if g == os.environ["master-password"]:
    for name, value in os.environ.items():
        if name == "master-password":
            continue
        print(f"{name}: {value}")

【讨论】:

    【解决方案2】:

    break 替换为pass

    g = input("What's the password?\n")
    if g == os.environ["master-password"]:
        for name, value in os.environ.items():
            if name == "master-password":
                pass
            else:
                print(f"{name}: {value}")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2020-08-03
      • 2019-10-31
      相关资源
      最近更新 更多