示例:
err := Db.Find(&event, id).Error
if err != nil {
c.JSON(500, err.Error())
return
}
我担心它可能包含敏感信息。示例:当连接到数据库并且db凭据无效时,我担心错误消息可能类似于:“invalid username:sample and password:xxx”
答案 0 :(得分:3)
有效地,您回答了自己的问题:您指出它可能包含敏感信息,这意味着不始终可以安全地将其包含在用户可见的回复中。
它还可能包含与您的实现相关的信息(例如包名称,类型名称,调用层次结构)以及配置数据(例如服务器名称,数据库名称,用户名等),可能会暴露私有和敏感的体系结构和业务信息。
考虑一下:您是一个包作者,并且您创建了函数/方法返回的error
值(错误消息)。您创建描述性错误消息,描述所请求的函数无法正常完成的原因,用于该函数/方法的调用者(开发人员),不用于最终用户 - 谁不应该知道幕后发生了什么。
error.Error()
消息适用于开发人员。它们在测试期间也很有用。它们对于追捕虫子是不可或缺的。您不应该向用户显示它们,而是将它们记录到您有权访问的用户,并向用户提供更一般或用户友好的错误消息,确保他们已通知开发团队并正在调查问题。显示原始错误消息可能会导致无经验用户混淆,并可能引发安全问题。
答案 1 :(得分:1)
最好的方法是写入错误日志,并返回自定义数据库错误信息。
像:
var (
ErrEventNotFound = "Event not found."
)
err := Db.Find(&event, id).Error
if err != nil {
// Log to file
c.JSON(500, ErrEventNotFound)
return
}