ホームページ >バックエンド開発 >PHPチュートリアル >PHP アンチインジェクション プログラムの機密情報_PHP チュートリアル

PHP アンチインジェクション プログラムの機密情報_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:11:12784ブラウズ

PHP セキュリティの 1 つである PHP アンチインジェクションは、私たちプログラマーが理解して習得する必要があるテクノロジーです。ここで、プログラム内の機密情報に対するセキュリティの実践方法をいくつか紹介します。


簡単に言うと、データベースのアドレス、ユーザー名、パスワードなど、他人に知られたくない情報です。この種の情報は、知る人が少ないほど良いです。

通常、PHP プログラムの設定ファイルは次のようになります:

コード レビューや共同開発などの理由により、サードパーティは、データベース アドレス、ユーザー名、パスワードなどの機密情報を承認した後、コード バージョン ウェアハウスへの読み取り権限を取得する必要があることがあります。暴露されるだろう。もちろん、設定ファイルをコードバージョンリポジトリに保存することはできませんが、それを説明するドキュメントを作成することはできませんが、コード自体が不完全になるため、この方法は好きではありません。
コードは次のとおりです コードをコピー


配列を返します(
'データベース' => 配列(
'ホスト' => '192.168.0.1',
                                                                                                                                                        'パスワード' => 'e1bfd762321e409cee4ac0b6e841963c',
)、
);
?>

このような問題を解決するにはどうすればよいですか?最も直接的な方法は、コードから機密情報を削除し、別の場所に保存することです。いったいどこに保存されているのでしょうか? nginx の fastcgi_param を通じて設定するなど、多くのオプションがあります:

コードは次のとおりですfastcgi_param DATABASE_HOST 192.168.0.1; fastcgi_param DATABASE_USER 管理者 このようなマッピングの後、コードには機密情報が直接含まれなくなります:
コードをコピー
fastcgi_param DATABASE_PASSWORD e1bfd762321e409cee4ac0b6e841963c;




コードは次のとおりですコードをコピーコードは次のとおりです
配列を返します(

'データベース' => 配列(
                                                                                                                                                                                                                                                                                                                                                                                                                'パスワード' => $_SERVER['DATABASE_PASSWORD']、
)、
);
?>




さらに、php-fpm の env コマンドを通じて設定することもできます:

コードをコピー

env[DATABASE_HOST] = 192.168.0.1 env[DATABASE_PASSWORD] = e1bfd762321e409cee4ac0b6e841963c
env[DATABASE_USERNAME] = 管理者


説明する必要があることの 1 つは、この設定はメイン設定ファイル php-fpm.conf に配置する必要があり、include ディレクティブによって設定されたサブ設定ファイルに配置することはできません。そうでない場合は、次のエラーが報告されます。グローバル セクションでは許可されていません"; もう 1 つの点は、env を通じて設定されていますが、結果は $_ENV ではなく $_SERVER にあります。

注: @Laruence さんから、nginx の fastcgi_param で設定情報を設定すると、nginx が php とやり取りする際に大量のデータが転送されることを思い出しました(そのため、php-fpm の env で設定した方が比較的有利なようです)。 , Niao 兄弟は、「Hidef」などの独立した拡張機能を使用することをお勧めします。

nginx および php-fpm 設定ファイルを使用して問題を解決する場合は、Web でのみ有効ですが、$_SERVER で関連情報を取得できません。は難しいことではありません。一般的なスクリプトを使用して nginx または php-fpm 設定ファイルを照合することができ、この情報をコマンドライン環境に動的にマッピングすることができます。

コードはきれいで、残りの作業は nginx または php-fpm 設定ファイルのセキュリティを確保することですが、コードと比較すると、nginx または php-fpm 設定ファイルは多くの人に権限を与える必要がありません。管理が比較的簡単です

皆さんが注意しなければならない重要な関数 phpinfo() もあります。phpinfo 関数が正常に表示できれば、

ことができます。


詳細
PHPInfo は、次の情報の一部を提供します:
*PHP バージョン (ビルドバージョンを含む正確なバージョン情報)
*システムバージョン情報 (ビルドバージョンを含む正確なバージョン情報)
※拡張ディレクトリ(PHPが置かれているディレクトリ)
*SMTPサーバー情報
*Sendmail のパス (Sendmail がインストールされている場合)
*Posixのバージョン情報
*データベース
*ODBC 設定 (パス、データベース名、デフォルトのパスワードなどを含む)
*MySQL クライアントのバージョン情報 (ビルドバージョンを含む正確なバージョン情報)
*Oracle のバージョン情報とライブラリのパス
*あなたの場所までの実際のパス
*ウェブサーバー
*IISのバージョン情報
※Apacheのバージョン情報
*Win32 で実行している場合:
*コンピューター名
*Windows ディレクトリの場所
*パス (インストールされているソフトウェア情報を漏洩するために使用される可能性があります)

例:
次のような URL にアクセスします:
http://www.example.com/PHP/phpinfo.php

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629613.html技術記事 PHP のセキュリティ面の 1 つである PHP アンチインジェクションは、私たちプログラマーが理解して習得する必要があるテクノロジーです。ここで、プログラム内の機密情報に対するセキュリティの実践方法をいくつか紹介します。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。