ウェピックスではウェブ界の情報をピックアップします!
menu
ホーム > PHPセキュリティー > 2 セキュリティーの基礎 > 2-2 PHPのエラーコードについて

2-2 PHPのエラーコードについて

Pocket

説明

PHPのエラーコード
PHPのエラーコードは開発者にとって非常にありがたいものです。どこでどのようなエラーが発生しているのかを教えてくれます。低いレベルのエラーが発生していてもスクリプトが動作してしまう場合が殆どで、そのようなエラーを放置したままスクリプトを記述することもできるでしょう(致命的なエラーの場合はスクリプトが停止しますが)。ですが、エラーコードを確認しながら記述することで、より正確にコードを記述することが出来ます。正確にコードを記述することによって、アプリケーションのセキュリティーレベルが上がり、また、バグを未然に防ぐことにも繋がるでしょう。エラーコードは必ず確認するようにしましょう。ですが、エラーコードは攻撃者にとって攻撃の糸口を探させる情報にもなりますので、非公開に設定しましょう。

PHPのエラー報告を公開しない
POINT

  • PHPのエラー報告を公開しない

PHPのエラーコードが公開されないようにしましょう。攻撃者はエラーコードから攻撃の糸口を探そうとします。エラーコードを非表示にする設定を以下で紹介します。

PHP構成ディレクティブ(指示文:php.ini)の設定でエラーコードを非表示
display_errors = Off」とすることで、PHPのエラーコードが公開されません。

log_errors = On」「error_log = /var/www/html/phperrorlog/logs.txt」とすることで、logs.txtへエラー内容が出力されるようになります。出力先のファイルは書き込みが出来る属性に変更しましょう。

E_ALL | E_STRICT」とすることでより厳しいチェックが行われます。初期化されていない変数の使用などに対してもエラーが報告されます。

display_errors = Off
error_reporting  =  E_ALL | E_STRICT
log_errors = On
error_log = /var/www/html/phperrorlog/logs.txt

php5の場合 ; error_log = syslog syslogを無効にする

iniファイルが設定できない場合の実装
phpファイルに直接記述します。記述したファイルを include することで実装できます。

ini_set('error_reporting', E_ALL | E_STRICT);
ini_set('display_errors', 'Off');
ini_set('log_errors', 'On');
ini_set('error_log','/var/www/html/phperrorlog/logs.txt');

関数での実装
関数をスクリプトの最初に実行することで実装できます。

set_error_handler('MyErrorHandler');

function MyErrorHandler($number, $string, $file, $line, $context){

	$errors = "==================\nPHP ERROR\n==================\n";
	$errors .= "Number:[$number]\n";
	$errors .= "String:[$string]\n";
	$errors .= "File:[$file]\n";
	$errors .= "Line:[$line]\n";
	$errors .= "Context:\n" .print_r($context, TRUE). "\n\n";

	error_log($errors, 3, '/var/www/html/phperrorlog/logs.txt');
}

MyErrorHandler();

タグ(=記事関連ワード)

日付

投稿日:2011年11月13日
最終更新日:2013年12月23日

関連記事

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://wepicks.net/phpsecurity-base-errorreport/trackback/