PHP安全程式設計之不要讓不相關的人看到報錯資訊

2021-07-16 09:44:53 字數 1234 閱讀 7147

沒有不會犯錯的開發者,php的錯誤報告功能可以協助你確認和定位這些錯誤,可以提供的這些錯誤的詳細描述,但如果被惡意攻擊者看到,這就不妙了。不能讓大眾看到報錯資訊,這一點很重要。做到這一點很容易,只要關閉display_errors,當然如果您希望得到出錯資訊,可以開啟log_errors選項,並在error_log選項中設定出錯日誌檔案的儲存路徑。

由於出錯報告的級別設定可以導致有些錯誤無法發現,您至少需要把error_reporting設為e_all。e_all | e_strict 是最高的設定,提供向下相容的建議,如不建議使用的提示。

所有的出錯報告級別可以在任意級別進行修改,所以您如果使用的是共享的主機,沒有許可權對php.ini, httpd.conf, 或 .htaccess等配置檔案進行更改時,您可以在程式中執行出錯報告級別配置語句:

<?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.ini的選項配置作了詳盡的說明。

set_error_handler() 函式

php還允許您通過 set_error_handler( ) 函式指定您自已的出錯處理函式:

<?php

set_error_handler('my_error_handler');

?>

上面程式指定了您自已的出錯處理函式my_error_handler()。下面是乙個實際使用的示例:

<?php

function my_error_handler($number, $string, $file, $line, $context)

?>

php 5還允許向set_error_handler( )傳遞第二個引數以限定在什麼出錯情況下執行出定義的出錯處理函式。比如,現在建立乙個處理告警級別(warning)錯誤的函式:

<?php

set_error_handler('my_warning_handler', e_warning);

?>

php5還提供了異常處理機制,詳見

來自:

PHP安全程式設計之PHP的安全模式

php的safe mode選項的目的是為了解決本小節前後所述的某些問題。但是,在php層面上去解決這類問題從架構上來看是不正確的,正如php手冊所述 當安全模式生效時,php會對正在執行的指令碼所讀取 或所操作 檔案的屬主進行檢查,以保證與該指令碼的屬主是相同的。雖然這樣確實可以防範本章中的很多例子...

PHP安全程式設計之開啟遠端檔案的風險

php有乙個配置選項叫allow url fopen,該選項預設是有效的。它允許你指向許多態別的資源,並像本地檔案一樣處理。例如,通過讀取url你可以取得某乙個頁面的內容 html contents file get contents 當被汙染資料用於include和require的檔案指向時,會產...

PHP安全程式設計之跨站指令碼攻擊的防禦

跨站指令碼攻擊是眾所周知的攻擊方式之一。所有平台上的web應用都深受其擾,php應用也不例外。echo name writes echo comment 這個流程對 comment及 name的值給予了充分的信任,想象一下它們中的乙個的內容中包含如下 這是乙個常見的錯誤,主要是由於不好的程式設計習慣...