ホームページ バックエンド開発 PHPチュートリアル php.ini_PHP チュートリアルのいくつかの一般的なセキュリティ構成方法

php.ini_PHP チュートリアルのいくつかの一般的なセキュリティ構成方法

Jul 13, 2016 pm 05:10 PM
php.ini について 安全性 よく使われる 記事 方法 構成

この記事では、php.ini で一般的なセキュリティ構成を行う方法を簡単に紹介します。必要な学生は参照してください。

(1) phpのセーフモードをオンにする

php のセーフ モードは、php の一部の関数 (system() など) を制御することができ、また、/ などの特定のキーワード ファイルを許可しません。 etc/passwd ですが、デフォルトの php.ini ではセーフ モードが開かないので、セーフ モードを開いてみましょう:

セーフモード = オン

(2) ユーザーグループのセキュリティ

safe_mode がオンで、safe_mode_gid がオフの場合、php スクリプトはファイルにアクセスでき、同じグループ内のユーザーもファイルにアクセスできます。また、同じグループ内のユーザーもファイルにアクセスできます。

推奨設定:

safe_mode_gid = オフ

設定を行わないと、ファイル操作が必要な場合など、サーバーWebサイトのディレクトリ内のファイル操作ができなくなる可能性があります。

(3) プログラムのホームディレクトリをセーフモードで実行します

セーフ モードがオンになっているが、特定のプログラムを実行したい場合は、実行するプログラムのホーム ディレクトリを指定できます:

safe_mode_exec_dir = /usr/bin

通常の状況では、プログラムを実行する必要はないため、システム プログラム ディレクトリを実行しないことをお勧めします。次に、次のような、実行する必要があるプログラムをコピーします。

safe_mode_exec_dir = /temp/cmd

ただし、プログラムを実行しないことをお勧めします。その場合は、Web ディレクトリを指定してください:

safe_mode_exec_dir = /usr/www

(4) セーフモードでファイルを含める

一部のパブリック ファイルをセーフ モードに含める場合は、オプションを変更します:

safe_mode_include_dir = /usr/www/include/

実際、通常、php スクリプトに含まれるファイルはプログラム自体に記述されており、特定のニーズに応じて設定できます。

(5) PHPスクリプトがアクセスできるディレクトリを制御する

open_basedir オプションを使用すると、指定されたディレクトリにのみアクセスするように PHP スクリプトを制御できます。これにより、特定のプログラムが phpshell の害を示すように、Web サイトにのみアクセスするように設定できます。ディレクトリ:

open_basedir = /usr/www

(6)危険な機能をオフにする

セーフモードがオンになっている場合、機能の禁止は必要ありませんが、安全性を考慮しております。たとえば、system() などの明確に実行される PHP 関数や、PHP 情報を表示できる phpinfo() などの関数を実行したくない場合は、それらを禁止できます。

disable_functions = システム、パススルー、exec、shell_exec、popen、phpinfo、escapeshellarg、escapeshellcmd、proc_close、proc_open、dl

ファイルやディレクトリの操作を禁止したい場合は、多くのファイル操作を閉じることができます

disable_functions = chdir、chroot、dir、getcwd、opendir、readdir、scandir、fopen、リンク解除、削除、コピー、mkdir、rmdir、名前変更、ファイル、file_get_contents、fputs、fwrite、chgrp、chmod、chown

上記は、より一般的に使用されるファイル処理関数の一部を示しているだけです。また、上記の実行コマンド関数とこの関数を組み合わせて、ほとんどの phpshell に対抗することもできます。

(7) httpヘッダー内のphpバージョン情報の漏洩を遮断する

ハッカーがサーバー内の PHP バージョン情報を取得するのを防ぐために、http ヘッダーでこの情報の漏洩をオフにすることができます:

expose_php = オフ

たとえば、ハッカーが www.girlcoding.com:80 に Telnet した場合、PHP 情報を見ることはできません

(8) 登録したグローバル変数を閉じる

PHP で送信された変数 (POST または GET を使用して送信された変数を含む) は、グローバル変数として自動的に登録され、直接アクセスできます。これはサーバーにとって非常に安全ではないため、グローバル変数として登録させることはできません。グローバルに登録するだけです。変数オプションがオフです:

register_globals = オフ

もちろん、これが設定されている場合は、対応する変数を取得するために合理的な方法を使用する必要があります。たとえば、GET によって送信された変数 var を取得するには、PHP プログラマが $_GET['var'] を使用する必要があります。これに注意する必要があります。

(9) SQL インジェクションを防ぐために、magic_quotes_gpc をオンにします

SQL インジェクションは、Web サイトのバックエンドに侵入したり、サーバー全体がダウンしたりする可能性がある非常に危険な問題ですので、注意してください。 php.ini に次の設定があります:

magic_quotes_gpc = オフ

これはデフォルトではオフになっています。オンにすると、「へ」の変換など、ユーザーが送信した SQL クエリを自動的に変換します。これは SQL インジェクションを防ぐのに非常に効果的です。 :

magic_quotes_gpc = オフ

ローカルアップロード時にプログラムが動作しない時がありましたが、サーバー上では正常に動作しました〜 discuzのコアファイルを引き継いでいることも原因かもしれません、パスの取得に問題がありました。このパラメータで問題は解決されました。

(10) エラーメッセージ制御

通常、PHP はデータベースに接続されていない場合、またはその他の状況下でエラー メッセージを表示します。一般に、エラー メッセージには、PHP スクリプトの現在のパス情報またはクエリの SQL ステートメントが含まれます。ハッカーに提供された後は安全ではないため、通常はサーバーでエラー プロンプトを無効にすることが推奨されます。

display_errors = オフ

本当にエラー情報を表示したい場合は、警告の上の情報のみを表示するなど、エラー表示のレベルを必ず設定してください:

error_reporting = E_WARNING & E_ERROR

もちろん、エラープロンプトをオフにすることをお勧めします。

(11) エラーログ

サーバー操作の理由を見つけやすくするために、display_errors を閉じた後にエラー メッセージを記録することをお勧めします。

log_errors = オン

同時に、エラー ログを保存するディレクトリも設定する必要があります。ルート Apache ログも一緒に保存することをお勧めします。

error_log = /usr/local/apache2/logs/php_error.log

注: ファイルでは、Apache ユーザーまたはグループに書き込み権限を与える必要があります。

http://www.bkjia.com/PHPjc/629662.html

tru​​ehttp://www.bkjia.com/PHPjc/629662.html技術記事この記事では、php.ini で一般的なセキュリティ設定を行う方法を簡単に紹介します。必要な学生は参照してください。 (1) phpのセーフモードをオンにする phpのセーフモードはとても重要です...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) May 01, 2024 pm 12:01 PM

WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します)

モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) May 04, 2024 pm 06:01 PM

モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます)

携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) 携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) May 07, 2024 pm 03:34 PM

携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます)

携帯電話の画面を保護する携帯電話のスクリーンプロテクターの選び方 (携帯電話のスクリーンプロテクターを購入する際のいくつかの重要なポイントとヒント) 携帯電話の画面を保護する携帯電話のスクリーンプロテクターの選び方 (携帯電話のスクリーンプロテクターを購入する際のいくつかの重要なポイントとヒント) May 07, 2024 pm 05:55 PM

携帯電話の画面を保護する携帯電話のスクリーンプロテクターの選び方 (携帯電話のスクリーンプロテクターを購入する際のいくつかの重要なポイントとヒント)

Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか? Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか? Jun 04, 2024 pm 02:53 PM

Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか?

シミを早く消す効果的な方法(シミを素早く簡単に消すスキンケアの秘訣を教えます) シミを早く消す効果的な方法(シミを素早く簡単に消すスキンケアの秘訣を教えます) May 03, 2024 pm 12:01 PM

シミを早く消す効果的な方法(シミを素早く簡単に消すスキンケアの秘訣を教えます)

PHP セキュリティのベスト プラクティスを実装する方法 PHP セキュリティのベスト プラクティスを実装する方法 May 05, 2024 am 10:51 AM

PHP セキュリティのベスト プラクティスを実装する方法

C++ での機械学習アルゴリズムの実装: セキュリティに関する考慮事項とベスト プラクティス C++ での機械学習アルゴリズムの実装: セキュリティに関する考慮事項とベスト プラクティス Jun 01, 2024 am 09:26 AM

C++ での機械学習アルゴリズムの実装: セキュリティに関する考慮事項とベスト プラクティス

See all articles