err := Db.Find(&event, id).Error
if err != nil {
c.JSON(500, err.Error())
return
}
我擔心它可能包含敏感信息。例如:當連接到數據庫並且數據庫證書無效時,我擔心錯誤消息可能是這樣的:「無效的用戶名:示例和密碼:xxx」
err := Db.Find(&event, id).Error
if err != nil {
c.JSON(500, err.Error())
return
}
我擔心它可能包含敏感信息。例如:當連接到數據庫並且數據庫證書無效時,我擔心錯誤消息可能是這樣的:「無效的用戶名:示例和密碼:xxx」
您有效地回答了您自己的問題:您指出它可能包含敏感信息,這意味着它是而不是始終可以安全地將它們包含在對用戶可見的響應中。
它也可能包含與您的實現相關的信息(例如軟件包名稱,類型名稱,調用層次結構)以及配置數據(例如服務器名稱,數據庫名稱,用戶名等),可能會暴露私人敏感架構和商業信息。
想一想:您是一名軟件包作者,並且您創建了由您的函數/方法返回的error
值(錯誤消息)。您爲描述性錯誤消息描述了爲什麼所請求的功能無法正常完成,旨在爲最終用戶提供該功能/方法(開發人員)和而非的呼叫者 - 誰不應該知道發動機罩下發生了什麼。
error.Error()
消息是針對開發者的。在測試過程中它們也很有用。它們是搜尋錯誤不可缺少的。您不應將它們展示給用戶,而是將它們記錄到您有權訪問的位置,並向用戶提供更一般或用戶友好的錯誤消息,確保他們已通知開發團隊並正在調查問題。顯示原始錯誤消息可能會導致無經驗的用戶感到困惑,並可能引發安全問題。
最好的方法是寫入錯誤日誌,並返回自定義數據庫錯誤信息。
,如:
var (
ErrEventNotFound = "Event not found."
)
err := Db.Find(&event, id).Error
if err != nil {
// Log to file
c.JSON(500, ErrEventNotFound)
return
}