ホームページ php教程 php手册 PHP をより安全にする PHP.ini

PHP をより安全にする PHP.ini

Jun 21, 2016 am 08:49 AM
apache mysql nbsp php

PHPの活用がますます進んでいます!安全性の問題はより重要です! php.ini

を安全に設定する方法は次のとおりです。

セキュリティ構成 1

(1) php

のセーフモードをオンにする

PHP のセキュリティ モードは、system()、

などの PHP の一部の関数を制御できる非常に重要な組み込みセキュリティ メカニズムです。

同時に、多くのファイル操作関数の権限が制御され、/etc/passwd、

などの特定のキー ファイルは許可されません。

しかし、デフォルトの php.ini はセーフ モードで開かないので、セーフ モードを開いてみましょう:

セーフモード = オン

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

safe_mode がオンになり、safe_mode_gid がオフになると、PHP スクリプトはファイルにアクセスできるようになり、同じ

グループ内のユーザーもファイルにアクセスできます。

次のように設定することをお勧めします:

safe_mode_gid = オフ

これを設定しないと、サーバー Web サイトのディレクトリ内のファイルを操作できなくなる可能性があります。たとえば、

が必要です。

ファイルを操作するとき。

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

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

safe_mode_exec_dir = D:/usr/bin

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

ディレクトリを指定できます。

次に、実行する必要があるプログラムをコピーします。

safe_mode_exec_dir = D:/tmp/cmd

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

safe_mode_exec_dir = D:/usr/www

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

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

safe_mode_include_dir = D:/usr/www/include/

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

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

open_basedir オプションを使用して、指定されたディレクトリにのみアクセスするように PHP スクリプトを制御します。これにより、PHP スクリプトが

にアクセスできなくなります。

アクセスすべきではないファイルにより、phpshell の害はある程度制限されます。通常は、Web サイトのディレクトリにのみアクセスするように設定できます:

open_basedir = D:/usr/www

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

セーフモードがオンになっている場合は機能を禁止する必要はありませんが、安全性を考慮しております。たとえば、

system() を含む、コマンドを実行したり、PHP 情報を表示したりできる PHP 関数は実行したくないと感じています

phpinfo() やその他の関数を無効にできます:

disable_functions = システム、パススルー、exec、shell_exec、popen、phpinfo

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

disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir, rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

上記は、一般的に使用されるファイル処理関数の一部のみを示しています。また、上記の実行コマンド関数とこの関数

を組み合わせることもできます。

ほとんどの phpshell に耐えることができます。

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

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

expose_php = オフ

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

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

PHP で送信された変数 (POST または GET を使用して送信された変数も含む) は、グローバル変数として自動的に登録され、直接アクセスできます。

これはサーバーにとって非常に安全ではないため、グローバル変数として登録させることはできません。そのため、グローバル変数の登録オプションをオフにします。

register_globals = オフ

もちろん、これが設定されている場合は、GET、

によって送信された変数 var を取得するなど、適切な方法を使用して対応する変数を取得する必要があります。

PHP プログラマーは、これを取得するために $_GET['var'] を使用する必要があります。

(9) magic_quotes_gpc をオンにして SQL インジェクションを防止します

SQL インジェクションは、Web サイトのバックエンドに侵入したり、サーバー全体がダウンしたりする可能性がある非常に危険な問題です。

だから注意してください。 php.ini に次の設定があります:

magic_quotes_gpc = オフ

これはデフォルトではオフになっています。オンにすると、ユーザー

によって送信された SQL クエリが自動的に変換されます。

たとえば、' を ' に変換するなど、SQL インジェクションの防止に重要な役割を果たします。したがって、次のように設定することをお勧めします:

magic_quotes_gpc = オン

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

通常、php はデータベースに接続されていない場合、またはその他の状況下でエラーを表示します。

の場合、エラー メッセージには php スクリプトが含まれます。

以前のパス情報やクエリ SQL ステートメント、その他の情報は、この種の情報がハッカーに提供されると安全ではなくなるため、通常はサーバーでエラー プロンプトを無効にすることをお勧めします。

display_errors = オフ

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

error_reporting = E_WARNING & E_ERROR

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

(11) エラーログ

サーバー動作の原因を見つけやすくするために、display_errors を閉じた後にエラー情報を記録することをお勧めします:

log_errors = オン

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

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

注: ファイルには、Apache ユーザーおよびグループに対する書き込み権限が与えられている必要があります。

MYSQL の権限を削減した操作

mysqlstart

などの新しいユーザーを作成します。

ネットユーザー mysqlstart ****microsoft /add

net ローカルグループ ユーザー mysqlstart /del

どのグループにも属していません

MYSQL が d:mysql にインストールされている場合は、mysqlstart にフル コントロールのアクセス許可を与えます

次に、システム サービスで MYSQL サービス プロパティを設定し、ログイン プロパティでこのユーザー mysqlstart を選択し、パスワードを入力して確認します。

MYSQL サービスを再起動すると、MYSQL は低い特権で実行されます。

Apache が Windos プラットフォーム上に構築されている場合、Apache はデフォルトでシステム権限で実行されるという 1 つの点に注意する必要があります。

これは恐ろしいことであり、人々を非常に不快にさせます。それなら、Apache の権限を下げましょう。

ネットユーザー apache ****microsoft /add

net ローカルグループ ユーザー apache /del

OK。どのグループにも属さないユーザー apche を作成しました。

コンピューターマネージャーを開き、サービスを選択し、Apache サービスのプロパティをクリックし、ログオンを選択し、このアカウントを選択し、上で作成したアカウントとパスワードを入力します。

Apache サービスを再起動します。Apache は低い権限で実行されています。

実際、Apache ユーザーが実行したいことのみを実行できるように各フォルダーの権限を設定し、ディレクトリごとに個別の読み取り/書き込みユーザーを作成することもできます。

これは、現在の多くの仮想ホスト プロバイダーの間で一般的な構成方法でもありますが、この方法をこれを防ぐために使用すると過剰になります。

セキュリティ構成 2

前のセクションでは、IIS+MySQL+PHP の基本的な構成プロセスと Windows の基本的な権限設定を紹介しました。この部分では、PHP のセキュリティ構成と Web ディレクトリのセキュリティ構成について説明する必要があります。もちろん、IIS の異常なセキュリティ構成も必要です。ここでいくつかの言葉から始めましょう。

最終的な目標は、Web サイトが PHP のみを実行し、ASP や ASP.NET をサポートしないようにすることです。そのため、ピクチャ ディレクトリなどの特定のディレクトリまたはサブサイトでは PHP を実行できないように設定します。あなたのウェブサイト 「ハッカー」はバックエンドにログインし、ファイルをアップロードすることができました。しかし、最終的には Web シェルを実行できませんでした。

たとえ Web シェルを取得したとしても、ディレクトリやファイルを読み取ったり、コマンドを実行したりすることはできません。言い換えれば、強力な Web シェルはハッカーの手には何の利用価値もなく、ハッカーは最終的に発狂して死ぬことになります。笑!実際、これを行うのはそれほど難しいことではありません。この記事を学習すると、このような異常なサーバー構成を独自に完了できるようになります。

1. php.iniファイルの設定異常

なぜ php.ini を先頭に置くのでしょうか? 私たちの Web サイトは PHP であるため、多くのデフォルト オプションは安全ではありません。これにより、ハッカーが悪用する機会が多く残るため、一般的なスクリプト ハッカーによる攻撃を防ぐために、最初のステップで php.ini を異常な値に設定する必要があります。

まず、php.ini の基本概念をいくつか理解しましょう。空白文字とセミコロンで始まる行は単に無視されます。設定ディレクティブの形式は次のとおりです。 ディレクティブ = 値 ディレクティブ名 (ディレクティブ) は大文字と小文字が区別されます。 したがって、「foo=bar」は「FOO=bar」とは異なります。値は次のとおりです:

1. 引用符で区切られた文字列 (例: "foo")

2. 数値 (0、1、34、-1、33.55 などの整数または浮動小数点数)

3. PHP 定数 (E_ALL、M_PI など)

4. INI 定数 (オン、オフ、なし)

5. 式 (例: E_ALL & ~E_NOTICE)

もう 1 つはブール値を設定する方法です。1 はオン (オン) を意味し、0 (オフ) はオフを意味します。 php.ini は、モジュール部分、php グローバル設定、データベース設定などの多くの部分に分かれています。図 1 は、基本的な php.ini の例を示しています。基本概念を理解したら、異常な構成の旅を始めることができます。



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

Apacheを始める方法 Apacheを始める方法 Apr 13, 2025 pm 01:06 PM

Apacheを開始する手順は次のとおりです。Apache(コマンド:sudo apt-get install apache2または公式Webサイトからダウンロード)をインストールします(linux:linux:sudo systemctl start apache2; windows:apache2.4 "serviceを右クリックして「開始」を右クリック) (オプション、Linux:Sudo SystemCtl

ApacheでCGIディレクトリを設定する方法 ApacheでCGIディレクトリを設定する方法 Apr 13, 2025 pm 01:18 PM

ApacheでCGIディレクトリを設定するには、次の手順を実行する必要があります。「CGI-Bin」などのCGIディレクトリを作成し、Apacheの書き込み許可を付与します。 Apache構成ファイルに「Scriptalias」ディレクティブブロックを追加して、CGIディレクトリを「/cgi-bin」URLにマッピングします。 Apacheを再起動します。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

Apacheバージョンを表示する方法 Apacheバージョンを表示する方法 Apr 13, 2025 pm 01:15 PM

Apacheサーバーでバージョンを表示するには3つの方法があります。コマンドライン(Apachectl -vまたはapache2ctl -v)を介して、サーバーステータスページ(http://< server ipまたはdomain name>/server -status)を確認します。

Apache80ポートが占有されている場合はどうすればよいですか Apache80ポートが占有されている場合はどうすればよいですか Apr 13, 2025 pm 01:24 PM

Apache 80ポートが占有されている場合、ソリューションは次のとおりです。ポートを占有するプロセスを見つけて閉じます。ファイアウォールの設定を確認して、Apacheがブロックされていないことを確認してください。上記の方法が機能しない場合は、Apacheを再構成して別のポートを使用してください。 Apacheサービスを再起動します。

Apacheのサーバー名以上の削除方法 Apacheのサーバー名以上の削除方法 Apr 13, 2025 pm 01:09 PM

Apacheから追加のservernameディレクティブを削除するには、次の手順を実行できます。追加のservernameディレクティブを識別して削除します。 Apacheを再起動して変更を有効にします。構成ファイルを確認して、変更を確認します。サーバーをテストして、問題が解決されていることを確認します。

Debian Apacheログレベルを設定する方法 Debian Apacheログレベルを設定する方法 Apr 13, 2025 am 08:33 AM

この記事では、DebianシステムのApachewebサーバーのロギングレベルを調整する方法について説明します。構成ファイルを変更することにより、Apacheによって記録されたログ情報の冗長レベルを制御できます。方法1:メイン構成ファイルを変更して、構成ファイルを見つけます。Apache2.xの構成ファイルは、通常/etc/apache2/ディレクトリにあります。ファイル名は、インストール方法に応じて、apache2.confまたはhttpd.confである場合があります。構成ファイルの編集:テキストエディターを使用してルートアクセス許可を使用して構成ファイルを開く(nanoなど):sudonano/etc/apache2/apache2.conf

See all articles