Pythonのimportステートメントには、開発者や企業が注意する必要があるセキュリティリスクが伴う。これがどのように機能するのか、そしてなぜ簡単な解決策がないのかを解説する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Pythonを使用する場合に対応が必要な、あまり注目されていないリスクが存在している。
最新のソフトウェア開発言語は全てモジュール式であるため、開発者はコードの大きなセクションを、より管理しやすい小さな部分に分割できる。これにより、通常はライブラリにグループ化されたコード単位を再利用できる。これらのライブラリは社内で作成されていないことが多く、グラフ作成、データベース接続、配列計算などの一般的なタスクを実行するために作成されたオープンソースコレクションだ。
コード単位が他のコード単位のメソッドおよびプロパティと連携するには、それらのコンポーネントを参照する必要がある。JavaやPythonを含む最新の言語は、この要件をimportステートメントの形式で実装する。これは、現代の全てのエンタープライズコードのバックボーンを形成する。
ただし、Pythonには、importステートメントの使用に伴う危険がある。本稿ではその理由を探り、なぜ簡単な解決策がないのかを解説する。
最新の言語では、ファイルをインポートするには使用するライブラリのインスタンスを作成するか、静的メソッドを直接呼び出す必要がある。いずれの場合でも、インポート内で何かを実行するには、コード内で何かを実行する。
Pythonはこの規則の例外に当たる。Pythonでファイルをインポートすると、メソッドではないトップレベルのコードがすぐに実行される。
多くの開発者は、このPythonインポート機能を有効に活用している。例えば、Pythonファイルのトップレベルの本体にコードを書き込んで、コードをテストしたり、ライブラリが依存関係に関して保持している前提を検証したりしている。
Pythonは基本的にスクリプト言語であり、ファイル本体から直接ロジックを作成して実行できる機能は魅力的だ。ただし、この機能はその性質上、実行するために明示的に何も呼び出されていないときにコードを実行する。これが大きな問題となる。
Copyright © ITmedia, Inc. All Rights Reserved.