環境
- ArchLinux
- Julia 1.3.0
CLI でのパスワード入力
readline()
や Base.prompt
で入力を受ける場合、入力した内容が丸見えでセキュリティもへったくれもない状態なため、パスワードを入力したい場合などには適しません。
入力したものを値を表示させずにキーボードから入力するには Baes.getpass()
を使います。
Base.getpass(message::AbstractString) -> Base.SecretBuffer
julia> s = Base.getpass("Enter your password") Enter your password: SecretBuffer("*******") julia> read(s, String) # 入力した値を取り出す "password12345"
使わなくなった秘密情報はすぐに Base.shred!
をしろ、String
は秘密情報を保持しておくのには適していないということが Base.SecretBuffer
の help に書いてあるものの、ならば SecretBuffer
に入った秘密情報はどのように利用するのがベストなのか私にはよくわかっていません。
Base.shred!
は確保した領域を 0 で埋めているということはソースコードから読み取れたので、そうするのが妥当だろうとは思いましたが(そうしないとクラッカーが該当の領域を直に覗きに来る)、SecretBuffer
の利用方法までは読み取れませんでした。
どうするのが良いのかな?