为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕桂英4014372 2021-12-07 10:32:52
例子:err := Db.Find(&event, id).Errorif err != nil {    c.JSON(500, err.Error())    return}我担心它可能包含敏感信息。示例:当连接到数据库并且数据库凭据无效时,我担心错误消息可能类似于:“无效的用户名:样本和密码:xxx”
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

您有效地回答了您自己的问题:您指出它可能包含敏感信息,这意味着将它们包含在用户可见的响应中并不总是安全的。

它还可能包含与您的实现相关的信息(例如包名称、类型名称、调用层次结构),以及配置数据(例如服务器名称、数据库名称、用户名等),可能会暴露私有和敏感的架构和业务信息。

想一想:你是一个包作者,你创建了error你的函数/方法返回的值(错误消息)。您创建描述性错误消息来描述为什么请求的函数无法正常完成,用于该函数/方法的调用者(开发人员),而不是最终用户 - 他们不应该知道幕后发生了什么。

error.Error()消息是给开发人员的。它们在测试期间也很有用。它们对于追捕虫子是必不可少的。您不应将它们显示给用户,而是将它们记录到您有权访问的位置,并向用户提供更一般或用户友好的错误消息,确保他们已通知开发团队并正在调查问题。显示原始错误消息可能会使没有经验的用户感到困惑,并可能引发安全问题。


查看完整回答
反对 回复 2021-12-07
?
jeck猫

TA贡献1909条经验 获得超7个赞

最好的方法是写入错误日志,并自定义数据库错误信息以供返回。


喜欢:


var (

    ErrEventNotFound = "Event not found."

)


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

if err != nil {

    // Log to file

    c.JSON(500, ErrEventNotFound)

    return

}


查看完整回答
反对 回复 2021-12-07
  • 2 回答
  • 0 关注
  • 334 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信