【问题标题】:does showing regular users the mysqli_errno considered safe or not?是否向普通用户显示 mysqli_errno 是否安全?
【发布时间】:2017-07-10 18:17:29
【问题描述】:

我想使用mysqli_errno() 将 MySQL 错误号发送到一个页面,告诉用户 '如果此代码仍然存在,则此代码有错误,请将此代码发送到 email@example.com 的网站所有者'。

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

这样安全吗?

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

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

【问题讨论】:

  • 安全与否,完全没用。您的用户无法调试您的代码库或修复您的服务器:)
  • @ÁlvaroGonzález 谢谢你,他们不能,但我认为这可能会有所帮助:)

标签: php mysql security error-code


【解决方案1】:

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

相反,您应该为您的客户创建一个服务接口,让他们可以登录以读取他们的错误日志。您可以为每个错误 (guid) 生成一个唯一的 id,并将错误保存在由同一 guid 键入的数据库中。然后,您可以以某种方式将该 guid 返回给客户端(例如,作为标头)。您的客户可以掌握这一点,并使用您的管理/错误服务来查询数据库以查找与该 ID 关联的错误。

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

【讨论】:

  • 感谢您的警告。我不会这样做。你有没有更好的解决方案?
  • 我已经作为答案的一部分做出了回应。感谢您建议它可能会更好。
  • 谢谢你,我是一个初学者,但是当我提高我的技能时,我会使用你的技术,最好的问候:)
猜你喜欢
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
相关资源
最近更新 更多