2013-03-09 110 views
2

我正在寫我的PHP應用程序中的錯誤提交類。我想捕捉的異常被拋出時,整個$_SERVER,如果用戶決定提交錯誤報告,存儲陣列$_SERVER與喜歡的問題,時間的描述其他有用信息的數據庫等

我計劃將捕獲的$_SERVER傳遞給$_SESSION中的bug報告表單,但我擔心如果我這樣做,我會暴露可用於利用我的系統的數據。要命名一對夫婦:

  • SERVER_SOFTWARE
  • DOCUMENT_ROOT

我是不是把自己處於危險之中?

+0

曝光?哪一條路? – 2013-03-09 07:03:13

回答

1

我在這樣的班級裏看不到任何一點。
爲什麼用戶干預,如果你的代碼可以自動存儲所有的相關信息,安全和準確?

爲什麼不能在拋出異常時在異常處理程序中記錄所有相關信息?

要從字面上回答你的問題 - 是的,一些服務器信息被認爲是敏感的。
雖然我看不出公開它的方式,除非你的錯誤報告的想法是要求用戶通過他們自己的電子郵件發送報告文本。

+0

我不知道他可能會出於某種原因將其發送給客戶。 – RockyFord 2013-03-09 07:09:45

+0

如果一個錯誤在報告後一個月纔得到解決,並且日誌文件由於大小/到期而被清除,該怎麼辦?這就是爲什麼我希望將相關信息存儲在比日誌文件更持久的地方。另外,我打算爲客戶製作一個漂亮的bug跟蹤器UI。 – 2013-03-09 07:15:31

+0

@TimeTravelMishap爲什麼不創建一個日誌函數,如果大於x的大小重命名日誌文件並創建一個新的日誌 – Class 2013-03-09 08:44:54

-1

該課程不是必需的。

而是使用這個模板腳本:

try { 
    // You usual script here - but do not use die - use throw new Exception(...) 
    // Could use include directive for example 

    // Of course you may need to re-throw some exceptions 

} catch (Exception $e) { 
    // Here you can record the fault (i.e. details of the exception $e, 
    // server variables $_SERVER, S_SESSION and the like 

    // Now give the user the internal server error and a pretty message saying 
    // something along the lines that you are sorry and it is not their fault. 
} 

此模板不會暴露任何您的網站的內部工作的遠程客戶端 - 無安全隱患。

+0

異常處理程序必須用於此。 – 2013-03-09 07:10:15

+0

@YourCommonSense - 代碼將最終捕獲所有異常。您可以修改它(我過去已經完成)以捕獲特定的異常,並且記錄錯誤並執行其他操作(例如,如果無法連接到某人的數據庫電子郵件) – 2013-03-09 07:14:43