2-2 PHPのエラーコードについて [PHPセキュリティー]
PHPセキュリティ
PHPのエラーコード
POINT
- 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」とすることでより厳しいチェックが行われます。初期化されていない変数の使用などに対してもエラーが報告されます。
1 2 3 4 | 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を無効にする
バージョン | 内容 |
---|---|
5.4.0 | E_STRICT が E_ALL に含まれる。 | 5.3.0 | E_DEPRECATED と E_USER_DEPRECATED が追加。 | 5.2.0 | E_RECOVERABLE_ERROR が追加。 | 5.0.0 | E_STRICT が追加。 (E_ALL には含まれない) |
iniファイルが設定できない場合の実装
phpファイルに直接記述します。記述したファイルを include することで実装できます。
1 2 3 4 | 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'); |
関数での実装
関数をスクリプトの最初に実行することで実装できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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(); |
タグ(=記事関連ワード)
タグ: PHPセキュリティー, エラー報告
日付
投稿日:2017年8月6日
最終更新日:2017年08月08日
最終更新日:2017年08月08日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/phpsecurity-base-errorreport/trackback/