PHPセキュリティプログラミング:関係のない人にエラーメッセージを見させない

4241 ワード

間違いを犯さない開発者はいません.PHPのエラーレポート機能は、これらのエラーの確認と位置決めに役立ちます.これらのエラーの詳細な説明を提供することができますが、悪意のある攻撃者に見られると、これはまずいです.間違った情報を大衆に見せてはいけないことが重要です.displayを閉じるだけで簡単ですerrors、もちろんエラーメッセージを取得したい場合は、log_を開くことができます.errorsオプション、error_logオプションでエラーログファイルの保存パスを設定します.
エラーレポートのレベル設定により、エラーが検出されない場合があります.少なくとも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
print
? 1 <?php 2 set_error_handler( 'my_warning_handler' , E_WARNING); 3 ?>
PHP 5はまた異常処理メカニズムを提供しており、詳しくはhttp://php.net/exceptions