在响应中包含 err.Error() 总是安全的吗?

例子:


err := Db.Find(&event, id).Error

if err != nil {

    c.JSON(500, err.Error())

    return

}

我担心它可能包含敏感信息。示例:当连接到数据库并且数据库凭据无效时,我担心错误消息可能类似于:“无效的用户名:样本和密码:xxx”


慕桂英4014372
浏览 335回答 2
2回答

芜湖不芜

您有效地回答了您自己的问题:您指出它可能包含敏感信息,这意味着将它们包含在用户可见的响应中并不总是安全的。它还可能包含与您的实现相关的信息(例如包名称、类型名称、调用层次结构),以及配置数据(例如服务器名称、数据库名称、用户名等),可能会暴露私有和敏感的架构和业务信息。想一想:你是一个包作者,你创建了error你的函数/方法返回的值(错误消息)。您创建描述性错误消息来描述为什么请求的函数无法正常完成,用于该函数/方法的调用者(开发人员),而不是最终用户 - 他们不应该知道幕后发生了什么。error.Error()消息是给开发人员的。它们在测试期间也很有用。它们对于追捕虫子是必不可少的。您不应将它们显示给用户,而是将它们记录到您有权访问的位置,并向用户提供更一般或用户友好的错误消息,确保他们已通知开发团队并正在调查问题。显示原始错误消息可能会使没有经验的用户感到困惑,并可能引发安全问题。

jeck猫

最好的方法是写入错误日志,并自定义数据库错误信息以供返回。喜欢:var (    ErrEventNotFound = "Event not found.")err := Db.Find(&event, id).Errorif err != nil {    // Log to file    c.JSON(500, ErrEventNotFound)    return}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go