2011-10-31 37 views
1

我對此行的一個問題:trigger_error('數據庫查詢失敗:'.mysql_error(),E_USER_ERROR); - >安全問題?

$db_conn = mysql_connect($db_host, $username, $password) or trigger_error('Query failed: ' . mysql_error($db), E_USER_ERROR); 

我使用此代碼連接到數據庫。從文檔E_USER_ERROR說,中斷腳本的執行,但我想知道的是,如果這構成了一個安全風險,顯示用戶不應該讀的錯誤/代碼的一些信息。

謝謝

回答

1

總之:是的。不要將內部錯誤消息暴露給任何外部用戶。原因是,你扔掉的信息越多,可能的攻擊者就越容易找到你的應用程序,服務器......的弱點。另一方面,普通用戶通常對內部任何內容都不感興趣,因此在那裏在隱藏它們時沒有缺點。但是,您應該記錄它們。

0

我想知道的是,如果這構成了一個安全風險,顯示一些關於用戶不應該讀的錯誤/代碼的信息。

如果您做了正確的事情,請關閉生產網站上的錯誤報告。

這就是爲什麼使用trigger_error()遠遠好於例如。 die() - 後者將始終顯示錯誤消息,而前者可以關閉。

1

從不向用戶報告內部錯誤。 您應該啓用錯誤在創作與sintax error_reporting(E_ALL);報告和禁用它,當你與error_reporting(0);

發佈網站/應用程式希望你會發現這個有用:-)