gpt4 book ai didi

javascript - 日志语句安全问题

转载 作者:行者123 更新时间:2023-12-03 03:17:51 24 4
gpt4 key购买 nike

我正在使用 SonarQube 对 JavaScript 代码进行代码分析。分析提示这行代码:

    if (this.isDebug) {
console.log("[DEBUG: " + message);
}

带有此消息:

Console logging should not be used.

Debug statements are always useful during development. But include them in production code - particularly in code that runs client-side - and you run the risk of inadvertently exposing sensitive information, slowing down the browser, or even erroring-out the site for some users.

现在,如果我将 console.log 更改为 console.info,我就不会收到之前的警告。但是,据我了解,loginfo 是等效的。

  1. 使用 info 是正确的解决方法吗?
  2. 解决此安全问题的最佳方法是什么?

最佳答案

代码分析工具想要生成大量输出,因此您会觉得使用它们是物有所值的。您仍然需要将自己的常识应用于他们的建议。

他们真正警告您的是,知道如何打开控制台的最终用户将能够看到您登录到控制台的任何内容。他们大概没有费心向 console.info 添加相同的警告,因为 console.info 相对未得到充分利用(尽管,正如您所指出的,它在功能上等同于 console.log。)

他们的警告混合了事实和虚构:

you run the risk of inadvertently exposing sensitive information

那部分是真的。 (对于某些“敏感”值。严格来说,假设代码在客户端运行,最终用户也可以通过深入研究代码来获取控制台上记录的任何信息,但读取控制台要简单得多。如果代码没有在客户端运行,那么无论您是否调用console.log都没有什么区别。)

slowing down the browser,

技术上是正确的,但在大多数现实情况下并不是非常相关。如果您要记录大量数据,浏览器确实需要花时间将这些数据打印到控制台中(尽管我相信只有在控制台当时打开的情况下才会出现这种情况。)这将需要相当长的时间在此之前进行一些日志记录应该会产生明显的效果。

or even erroring-out the site for some users.

我将继续说这部分是无稽之谈:我不知道有哪个浏览器如此脆弱,以至于仅调用 console.log 就会导致错误。

您的问题

Would using info be the right fix?

如果您关心的只是让警告消失,当然可以使用.info();除了使警告消失之外,它不会解决任何问题,但根据您记录的内容,可能一开始就不需要解决问题。

What would be the best approach to fix this security issue?

理想情况下,构建管道可以删除控制台消息,这样您就不必记得自己删除它们;这区分了开发环境和生产环境,因此您不必在 this.isDebug 等标志中进行编码。

如果失败,请检查您的代码以确保您没有记录任何可能被视为敏感的内容。在您的情况下,由于日志调用包含在调试标志中,因此您需要确保 this.isDebug 在生产环境中永远不会设置为 true。

关于javascript - 日志语句安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46693467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com