向普通用户显示 mysqli_errno 是否安全?

does showing regular users the mysqli_errno considered safe or not?

我考虑过使用 mysqli_errno() 将 MySQL 错误编号发送到一个页面,告诉用户 'there was an error with this code if this persists, please send this code to the site owner at email@example.com'.

我看过一节课,展示了如何将 mysqli_error() 消息抛出到错误页面,但我不希望用户看到描述性文本,只看到代码。

这里安全吗?

显示 MySQL 错误代码不会威胁我网站的安全吗?

我想从错误代码中获益来解决问题。您是否建议其他技术?

不要这样做。暴露服务器基础设施的详细信息是一个安全漏洞。如果攻击者知道您正在使用 mysql,他们可能会尝试 mysql 攻击。最好将此信息保密。

相反,您应该为您的客户创建一个服务接口,他们可以登录到该接口来阅读他们的错误日志。您可以为每个错误 (guid) 生成一个唯一的 id,并将错误保存在由相同 guid 键入的数据库中。然后您可以 return 该 guid 以某种方式发送给客户端(例如 header)。您的客户可以掌握它并使用您的 admin/error 服务查询数据库以查找与该 ID 关联的错误。

我知道这听起来很复杂,但安全性也很复杂。有一些方法可以简化这一点——例如 COTS 工具,但它们基本上都遵循这种模式。