PHPセキュリティプログラミング:関係のない人にエラーメッセージを見させない
4241 ワード
間違いを犯さない開発者はいません.PHPのエラーレポート機能は、これらのエラーの確認と位置決めに役立ちます.これらのエラーの詳細な説明を提供することができますが、悪意のある攻撃者に見られると、これはまずいです.間違った情報を大衆に見せてはいけないことが重要です.displayを閉じるだけで簡単ですerrors、もちろんエラーメッセージを取得したい場合は、log_を開くことができます.errorsオプション、error_logオプションでエラーログファイルの保存パスを設定します.
エラーレポートのレベル設定により、エラーが検出されない場合があります.少なくともerror_ReportingをE_に設定ALL.E_ALL | E_STRICTは最高の設定で、使用を推奨しないヒントなど、下向きの互換性のあるアドバイスを提供します.
すべてのエラーレポートレベルは任意のレベルで変更できますので、共有ホストを使用している場合はphpに権限がありません.ini, httpd.conf,または.htaccessなどのプロファイルを変更すると、エラーレポートレベルの構成文をプログラムで実行できます.
http://php.net/manual/ini.phpphp.iniのオプション構成について詳しく説明した.
set_error_handler()関数
PHPではset_を通過することもできますerror_handler()関数は、自分のエラー処理関数を指定します.
上記のプログラムは、自分のエラー処理関数myを指定しています.error_handler().次に、実際に使用した例を示します.
PHP 5はset_へのerror_handler()は、2番目のパラメータを渡して、どのエラーが発生した場合に定義されたエラー処理関数を実行するかを定義します.たとえば、アラート・レベルのエラーを処理する関数を作成します.
view source
print
?
PHP 5はまた異常処理メカニズムを提供しており、詳しくはhttp://php.net/exceptions
エラーレポートのレベル設定により、エラーが検出されない場合があります.少なくともerror_ReportingをE_に設定ALL.E_ALL | E_STRICTは最高の設定で、使用を推奨しないヒントなど、下向きの互換性のあるアドバイスを提供します.
すべてのエラーレポートレベルは任意のレベルで変更できますので、共有ホストを使用している場合はphpに権限がありません.ini, httpd.conf,または.htaccessなどのプロファイルを変更すると、エラーレポートレベルの構成文をプログラムで実行できます.
1
<?php
2
3
ini_set
(
'error_reporting'
, E_ALL | E_STRICT);
4
ini_set
(
'display_errors'
,
'Off'
);
5
ini_set
(
'log_errors'
,
'On'
);
6
ini_set
(
'error_log'
,
'/usr/local/apache/logs/error_log'
);
7
8
?>
http://php.net/manual/ini.phpphp.iniのオプション構成について詳しく説明した.
set_error_handler()関数
PHPではset_を通過することもできますerror_handler()関数は、自分のエラー処理関数を指定します.
1
<?php
2
set_error_handler(
'my_error_handler'
);
3
?>
上記のプログラムは、自分のエラー処理関数myを指定しています.error_handler().次に、実際に使用した例を示します.
01
<?php
02
03
function
my_error_handler(
$number
,
$string
,
$file
,
$line
,
$context
)
04
{
05
$error
=
"= == == == ==
PHP ERROR
= == == == ==
"
;
06
$error
.=
"Number: [$number]
"
;
07
$error
.=
"String: [$string]
"
;
08
$error
.=
"File: [$file]
"
;
09
$error
.=
"Line: [$line]
"
;
10
$error
.=
"Context:
"
. print_r(
$context
, TRUE) .
"
"
;
11
12
error_log
(
$error
, 3,
'/usr/local/apache/logs/error_log'
);
13
}
14
15
?>
PHP 5はset_へのerror_handler()は、2番目のパラメータを渡して、どのエラーが発生した場合に定義されたエラー処理関数を実行するかを定義します.たとえば、アラート・レベルのエラーを処理する関数を作成します.
view source
?
1
<?php
2
set_error_handler(
'my_warning_handler'
, E_WARNING);
3
?>
PHP 5はまた異常処理メカニズムを提供しており、詳しくはhttp://php.net/exceptions