17

在最近的一次 PCI 审计中,审计员说我们存在重大安全风险,因为

  1. 可以从我们的网站下载静态资源,例如图像 css 和 javascript,而无需事先验证。
  2. 我们的 javascript 中有注释。

我个人认为这根本不是安全风险。图像 css 和 javascript 不是动态创建的,它们不包含关于我们的后端、客户详细信息和机制的数据。

javascript 中的注释只是简单地解释了 javascript 文件中的方法的作用。任何读过 JS 的人都可以发现。

那如何显示“信息泄露”?

javascript中的注释真的有安全风险吗?

4

5 回答 5

17

根据审核的严格程度,未经身份验证下载图像等可能被视为安全风险(想想图表、图表、图形......)。

删除 javascript 中的注释就像混淆代码:它使它变得有点困难,但仍然不是不可能理解发生了什么。无论如何,JavaScript 应该被视为仅增强功能,您的所有安全性都应该(复制)在服务器端。让任何人了解 JS 的功能不应被视为风险

于 2010-07-05T08:59:47.230 回答
16

这取决于评论的内容。因为在没有人工干预的情况下,无法检查注释的内容以确定它们是否有风险,因此最有效的审计方法是将面向客户端的源代码中的所有注释声明为有风险的。

以下是潜在风险评论的示例。

// doesn't really authenticate, placeholder for when we implement it.
myServer.authenticate(user,pass);

或者

// don't forget to include the length, 
//the server complains if it gets NaN or undefined.
function send_stuff(stuff, length) {
...
}

或者

function doSomething() {
    querystring = ""
    //querystring = "?TRACING_MODE=true&"
    ...
    //print_server_trace();
}

另一个示例可能是,如果您包含源代码历史标头,则有人可能能够通过检查已修复的错误种类来发现一些安全漏洞。至少,如果破解者知道哪些攻击向量已经被关闭,他可能能够更好地针对他的攻击。

现在,无论如何,所有这些示例都是不好的做法(评论和代码),防止它的最佳方法是拥有代码审查和优秀的程序员。第一个例子特别糟糕,但是像第二个例子那样对你的队友发出无辜的警告,或者像第三个例子那样被注释掉的调试代码,都是可能漏网之鱼的安全漏洞。

于 2010-07-05T09:52:27.777 回答
5

在不考虑它们是否存在安全风险的情况下,在生产环境中缩小您的 JS,这将防止“信息泄漏”并帮助(至少在某种程度上)保护您网站的信息。

关于安全风险,我认为 JS 评论根本没有风险,每个网站内容(静态)都可以在没有认证的情况下下载。(除非另有定义)

于 2010-07-05T08:59:52.857 回答
5

如果他们只揭示代码是如何工作的,就不会。无论如何,任何有足够决心的人都可以发现这一点。

也就是说,缩小 JavaScript 可能是个好主意。不是因为安全,而是因为它会减少下载时间,从而使您的网站更具响应性。

于 2010-07-05T09:00:12.110 回答
3

JavaScript 注释即可。取决于您的逻辑,但可以肯定的是,由于它是公开可用的,因此您对代码的工作方式有了更多的了解。

删除它还有其他原因,例如文件大小以及下载大小。

诸如JSMin 之类的工具可以帮助您删除注释并避免对代码进行粗暴的混淆。

于 2010-07-05T09:02:06.543 回答