4

ハードコーディングされた機密情報 (API キーの文字列、データベースのパスワード) をセキュリティのために環境変数として保持することについて書かれた記事をたくさん見てきました。私はこの概念に少し慣れていませんが、レールについてはたくさん見てきましたが、PHP 側ではあまり見ませんでした。

PHP FOGでさえ、ユーザーの初期 mysql DB 情報を作成するときにこのタイプのセットアップを使用します。

ただし、これがどこに設定されているのか、特定のphp Webページ/アプリケーションを使用してどのように取得されるのかはよくわかりません。私はこれを、トランザクションの電子メール API キーやその他の情報を安全に保ち、複数のページで使用できるようにするなどの観点から見ています。

たとえば、config.php ファイルを作成してサイトのルートに配置した場合、コード内でキーを直接呼び出すのと実際に違いはありますか? 環境変数はどこに設定する必要があり、それらを呼び出す最も効率的な方法は何ですか? これが SESSION 変数とどのように異なるのかにも興味がありますか?

注: Nginx をペアにして LAMP スタックを実行しています。

更新 1: これらのユーザーの 1 人は、環境変数を「非公開」ファイルだけで使用することに反対する傾向がありますが、これがどのように大きく異なるかはわかりません。

更新 2: この記事も見つかりました。これは、Windows の観点から一般的な意味を持っているようです (*nix で php のインクルード パスを変更する必要があると仮定しますか?)。繰り返しになりますが、とにかく API キーを PHP スクリプトに直接ハードコーディングするよりも、これにはどのような利点があるのでしょうか?

4

1 に答える 1

0

これは、具体的なセキュリティに関連するというよりも、システム統合の一種だと思います。

環境変数を使用して、スクリプトが実行されるコンテキストを作成できます。スクリプト自体は、これらを (隠された) 依存関係として受け取ります。

そのため、php ベースの構成ファイルを含むがこれに限定されないコード行を変更することなく、異なる環境 (環境設定) で同じスクリプトを実行できます。

たとえば、スクリプトを自動的に展開する場合、原則が一般的であるため、展開システムは通常、環境変数を設定できます。特定の構成ファイルを認識して変更できるように、展開スクリプトを変更する必要はありません。

セキュリティの観点からは、大きな違いはありません。環境変数は、スクリプト内のグローバル変数にアクセスできるのと同様に、パブリックにアクセスできます。

于 2012-11-27T22:11:39.777 に答える