PHPのセーフモードとはどういう意味ですか?
第 24 章 セーフ モード
ディレクトリ
セーフ モードによって制限またはブロックされる機能
PHP のセーフ モードは、共有サーバーのセキュリティ問題を解決する試みとして確立されました。この問題をPHP層で解決しようとするのは構造的に無理がありますが、WEBサーバー層やオペレーティングシステム層を修正するのは非常に非現実的です。現在、非常に多くの人、特に ISP がセーフ モードを使用しています。
表 24-1. セーフ モードを制御する設定オプションは次のとおりです:
オプションのデフォルト値を設定します
safe_mode Off
safe_mode_gid 0
safe_mode_include_dir ""
safe_mode_exec_dir 1
open_basedir ""
safe_mode_allowed_env_vars PHP_
safe_mode_protected_env_vars LD_LIBRARY_PATH
disable_functions ""
safe_mode が on に設定されている場合、PHP はの所有者現在のスクリプトは file 関数によって操作されているファイルの所有者と一致します。例: -rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php
-rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd
Run script.php readfile('/etc/passwd');
セーフ モードが有効になっている場合、次のエラーが発生します。 : セーフ モード制限が有効です。uid が 500 のスクリプトは、/docroot/script.php の 2 行目で uid 0 が所有する /etc/passwd へのアクセスを
できません。 >同時に、緩やかな GID チェックで十分だが、厳密な UID チェックは不適切な環境も存在する可能性があります。このチェックは、safe_mode_gid オプションを使用して制御できます。オンに設定すると、緩和された GID チェックが実行されます。オフ (デフォルト) に設定すると、UID チェックが実行されます。
safe_mode に加えて、open_basedir オプションを設定すると、すべてのファイル操作が指定したディレクトリに制限されます。例:
php_admin_value open_basedir /docroot
open_basedir オプションを設定して同じ script.php を実行すると、結果は次のようになります。 : open_basedir 制限が有効です。ファイルは
/docroot/script.php の 2 行目で間違ったディレクトリにあります。
特定の機能を個別にブロックすることもできます。 disable_functions オプションは php.ini ファイルの外部では使用できないことに注意してください。つまり、httpd.conf ファイル内の別の仮想ホストまたは別のディレクトリによって機能を無効にすることはできません。 次の内容を php.ini ファイルに追加すると、disable_functions readfile,system
が表示されます。 警告:
/docroot/script では、セキュリティ上の理由から readfile() が無効になっています。 .php 行 2
セーフ モードによって制限またはブロックされる機能
次のセーフ モードのリストは不完全であるか、間違っている可能性があります。
表 24-2. セーフ モードの制限関数
関数名 制限
dbmopen() は、操作しようとしているファイル/ディレクトリがスクリプトと同じ UID を持つかどうかを確認します。処刑されている。
dbase_open() は、操作しようとしているファイル/ディレクトリが、実行されているスクリプトと同じ UID を持つかどうかを確認します。
filepro() は、操作しようとしているファイル/ディレクトリが、実行中のスクリプトと同じ UID を持つかどうかを確認します。
filepro_rowcount() は、操作しようとしているファイル/ディレクトリが、実行されているスクリプトと同じ UID を持つかどうかを確認します。
filepro_retrieve() は、操作しようとしているファイル/ディレクトリが、実行中のスクリプトと同じ UID を持つかどうかを確認します。
ifx_*() sql_safe_mode 制限、(!= セーフ モード)
ingres_*() sql_safe_mode 制限、(!= セーフ モード)
mysql_*() sql_safe_mode 制限、(!= セーフ モード)
pg_loimport() は、操作しようとしているファイル/ディレクトリが実行中のスクリプトと同じ UID を持つかどうかを確認します。
posix_mkfifo() は、操作しようとしているディレクトリと実行中のスクリプトの UID が同じかどうかを確認します。
putenv() は、ini によって設定されたsafe_mode_protected_env_vars オプションとsafe_mode_allowed_env_vars オプションを尊重します。 putenv() 関数のドキュメントを参照してください。
move_uploaded_file() は、操作しようとしているファイル/ディレクトリが、実行されているスクリプトと同じ UID を持つかどうかを確認します。
chdir() は、操作しようとしているディレクトリと実行中のスクリプトの UID が同じかどうかを確認します。
dl() この関数はセーフ モードでブロックされています。
バックティック演算子 この関数はセーフ モードでブロックされています。
shell_exec() (機能的にはバックティック関数と同じ) この関数はセーフ モードでブロックされています。
exec() 操作は、safe_mode_exec_dir で設定されたディレクトリ内でのみ実行できます。何らかの理由で、現在、.. は実行可能オブジェクトのパスに使用できません。
system() 操作は、safe_mode_exec_dir で設定されたディレクトリ内でのみ実行できます。何らかの理由で、現在、実行可能オブジェクトのパスに .. を使用することはできません。
passthru() 操作は、safe_mode_exec_dir で設定されたディレクトリ内でのみ実行できます。何らかの理由で、現在、実行可能オブジェクトのパスに .. を使用することはできません。
popen() 操作は、safe_mode_exec_dir で設定されたディレクトリ内でのみ実行できます。何らかの理由で、現在、実行可能オブジェクトのパスに .. を使用することはできません。
mkdir() は、操作しているディレクトリと実行中のスクリプトの UID が同じかどうかを確認します。
rmdir() は、操作しようとしているファイル/ディレクトリが、実行中のスクリプトと同じ UID を持つかどうかを確認します。
rename() は、操作しようとしているファイル/ディレクトリが実行中のスクリプトと同じ UID を持つかどうかを確認します。 操作しているディレクトリと実行中のスクリプトの UID が同じかどうかがチェックされます。
unlink() は、操作しようとしているファイル/ディレクトリが、実行中のスクリプトと同じ UID を持つかどうかを確認します。 操作しようとしているディレクトリと実行中のスクリプトの UID が同じかどうかがチェックされます。
copy() は、操作しようとしているファイル/ディレクトリが、実行中のスクリプトと同じ UID を持つかどうかを確認します。 操作しているディレクトリと実行中のスクリプトの UID が同じかどうかがチェックされます。 (ソースとターゲットで)
chgrp() は、操作しようとしているファイル/ディレクトリが実行中のスクリプトと同じ UID を持つかどうかを確認します。
chown() は、操作しようとしているファイル/ディレクトリが、実行中のスクリプトと同じ UID を持つかどうかを確認します。
chmod() は、操作しようとしているファイル/ディレクトリが、実行中のスクリプトと同じ UID を持つかどうかを確認します。 また、SUID、SGID、およびスティッキー ビットを設定することはできません。
touch() は、操作しようとしているファイル/ディレクトリが実行中のスクリプトと同じ UID を持つかどうかを確認します。 操作しようとしているディレクトリと実行中のスクリプトの UID が同じかどうかがチェックされます。
symlink() は、操作しようとしているファイル/ディレクトリが、実行中のスクリプトと同じ UID を持つかどうかを確認します。 操作しようとしているディレクトリと実行中のスクリプトの UID が同じかどうかがチェックされます。 (注: テスト対象のみ)
link() は、操作しようとしているファイル/ディレクトリが、実行中のスクリプトと同じ UID を持つかどうかを確認します。 操作しようとしているディレクトリと実行中のスクリプトの UID が同じかどうかがチェックされます。 (注:テスト対象のみ)
getallheaders() セーフモードでは「authorization」(大文字と小文字を区別)で始まるヘッダ情報は返されません。警告: getallheaders() は aol-server の下では実装できません。
header() セーフ モードで WWW-Authenticate を設定すると、現在のスクリプトの uid がヘッダーのレルム部分に追加されます。
highlight_file()、show_source() は、操作しようとしているファイル/ディレクトリが実行中のスクリプトと同じ UID を持つかどうかを確認します。 操作しようとしているディレクトリと実行中のスクリプトの UID が同じかどうかがチェックされます。 (バージョン 4.2.1 以降のみ有効であることに注意してください)
parse_ini_file() は、操作しようとしているファイル/ディレクトリが実行中のスクリプトと同じ UID を持つかどうかを確認します。 操作しているディレクトリと実行中のスクリプトの UID が同じかどうかがチェックされます。 (バージョン 4.2.1 以降のみ有効であることに注意してください)
php4/main/fopen_wrappers.c を使用する関数 ??

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます
