【问题标题】:How to hide/mask passwords in Fastlane logs?如何在 Fastlane 日志中隐藏/屏蔽密码?
【发布时间】:2021-09-01 15:16:36
【问题描述】:

我在Fastlane中寻找一种安全处理密码的方法,发现有一个输入密码的内置方法UI.password

lane :enter_password do
    password = UI.password 'Password: '
    sh "echo Your password is #{password}"
end

这很好用,但是当您使用密码时,它会以纯文本形式打印在日志中:

------------------------------------------------------
--- Step: echo 'Your password is tAM5RdCRxD3e3TU' ---
------------------------------------------------------
$ echo 'Your password is tAM5RdCRxD3e3TU'
▸ Your password is tAM5RdCRxD3e3TU

理想情况下,输出应该是这样的:

------------------------------------------------------
--- Step: echo 'Your password is *****' ---
------------------------------------------------------
$ echo 'Your password is *****'
▸ Your password is *****

有没有办法做到这一点?

【问题讨论】:

    标签: logging passwords fastlane


    【解决方案1】:

    不,如果没有将此功能添加到 Fastlane 中。

    但您可以将log:false 传递给sh 以获取使用密码的命令:

    lane :enter_password do
        password = UI.password 'Password: '
        sh "echo Your password is #{password}", log:false
    end
    

    这会导致 Fastlane 只输出:

    ---------------------------
    --- Step: shell command ---
    ---------------------------
    

    这样做的问题是它会抑制所有内容,包括错误消息,这使得在命令失败时很难调试问题。解决方法是将密码放入环境变量中,如下所示:

    lane :enter_password do
        ENV['PASSWORD'] = UI.password 'Password: '
        sh 'echo Your password is $PASSWORD'
    end
    

    输出将是:

    ---------------------------------------------
    --- Step: echo Your password is $PASSWORD ---
    ---------------------------------------------
    $ echo Your password is $PASSWORD
    ▸ Your password is tAM5RdCRxD3e3TU
    

    这意味着只要您的命令不将密码打印到日志中,您将获得所有输出,而不会泄露密码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 2016-09-01
      • 2022-12-07
      • 1970-01-01
      • 2010-12-17
      • 2021-02-13
      相关资源
      最近更新 更多