Fitur PHP Rawan Keamanan 2 – Error Reporting

Posted: 25 September 2010 in Pemrograman Web, PHP, Security

Setiap programmer selalu membuat kesalahan, fitur PHP Error Reporting membantu programmer mengidentikasi dan mencari kesalahan yang dibuatnya. Bagimanapun detail informasi yang disediakan PHP bisa di jadikan informasi bagi calon penyerang aplikasi kita, dan ini tidak kita inginkan. Sangat penting untuk memastikan bahwa informasi seperti ini tidak disajikan ke publik. Caranya cukup simple, yaitu dengan mengatur display_errors menjadi OFF. Tentu saja kita sebagai programmer ingin selalu diberitahu jika terjadi eror dan ini bisa dilakukan dengan mengatur log_errors ke ON. Lalu mendefinisikan tempat file yang akan menyimpan catatan error dengan error_log.

Karena level error reporting bisa menyebabkan beberapa error disembunyikan kita harus mengatur PHP error_reporting menjadi E_ALL (E_ALL | E_STRICT).

Semua perilaku error reporting bisa diubah pada berbagai level tingkatan, jadi jika kita berada pada kondisi aplikasi dijalankan pada shared hosting, atau kita tidak bisa mengubah file php.ini, httpd.conf, atau .htacces, kita bisa mengimplementasikan kode program di bawah ini :

<?php
ini_set(‘error_reporting’, E_ALL | E_STRICT);
ini_set(‘display_errors’, ‘Off’);
ini_set(‘log_errors’, ‘On’);
ini_set(‘error_log’, ‘/usr/local/apache/logs/error_log’);
?>

PHP juga mengijinkan kita untuk menangani error kita sendiri dengan fungsi set_error_handler( ).

<?php
set_error_handler(‘my_error_handler’);
?>

ini akan mengijinkan kita untuk menangani error dengan fungsi kita sendiri seperti fungsi (my_error_handler( ). Implementasinya seperti dibawah ini :

<?php
function my_error_handler($number, $string, $file, $line, $context)
{
$error = “=  ==  ==  ==  ==\nPHP ERROR\n=  ==  ==  ==  ==\n”;
$error .= “Number: [$number]\n”;
$error .= “String: [$string]\n”;
$error .= “File:   [$file]\n”;
$error .= “Line:   [$line]\n”;
$error .= “Context:\n” . print_r($context, TRUE) . “\n\n”;
error_log($error, 3, ‘/usr/local/apache/logs/error_log’);
}
?>

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

w

Connecting to %s