tapitapi’s blog

1日1杯タピオカ!エンジニア

【python】 YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated エラー

pythonyamlを使っていたところ、

YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated

という警告が出ました。

 

下記のようにLoaderオプションを指定しないと警告がでる(非奨励)っぽい(2006年~load関数は安全性に問題があったようです、、、)ので

Loaderオプションについて調査

yaml.load(input, Loader=yaml.FullLoader)

 

リファレンス

github.com

 

1. Loader=yaml.BaseLoader

普通のYAMLのみを読み込みする

 

2.  Loader=yaml.SafeLoader

YAMLの一部を読み込み(安全に。)。yamlに信頼できない値が入ってしまう場合は、このオプションを推奨

 

3.  Loader=yaml.FullLoader

すべてのYAMLを読み込み。実行できてしまう(攻撃されたときなど)コードの実行は回避。現在はLoaderオプションを指定しないと、このオプションがデフォルトで実行される。

 

4.  Loader=yaml.UnsafeLoader

以前の(Loaderオプションがなかった時の)コードの互換性のためのオプション

 

以上ですーー!

 

基本的にFullLoader オプションを指定すれば良さそうです。

外部から悪意ある入力が想定される場合は、SafeLoaderオプションが推奨されているようです。

 

警告はだいたい無視(ビルドできれば気にしない)する派だったのですが、

最近はなるべくエラーメッセージを読む習慣をつけようと思っています、、、。

 

おやすみなさいぃぃぃ