在我的 .NET Web 应用程序中,我通常有一个 Scripts 文件夹,其中包含我所有的 JavaScript 文件 - 现在主要是 jQuery,偶尔还有某种 JavaScript 库。
我正在通过名为 Nexpose 的扫描器对我的一个网站运行漏洞扫描,它告诉我 Scripts 文件夹向全世界开放 - 这意味着未经身份验证的用户可以下载文件夹中包含的 JavaScript 文件,这是一个严重的漏洞。根据 Nexpose 的说法,Scripts 文件夹应该被限制为只允许经过身份验证的用户访问它。这引出了我的第一个问题。
我如何将 Scripts 文件夹限制为仅经过身份验证的用户?我尝试将 web.config 文件放入 Scripts 文件夹并拒绝所有未经身份验证的用户访问,但它不起作用.我自己能够确定这一点,但是转到我网站的登录页面,但没有登录,然后输入 https://mywebsite/scripts/menubar.js果然它允许我下载 menubar.js 文件。
第二个问题 - 为什么这被认为是一个漏洞?我已经尝试通过这里的可能性来推理我的方式,但我根本没有想出太多。这是一个漏洞,仅仅是因为 Joe the l33t h4x0r 可以找出我正在使用的各种库,然后可能对它们使用已知的漏洞利用吗?
更新
绝大多数的答案似乎是,绝不应该仅仅因为可以在客户端浏览器上打开和读取 .js 文件就存在漏洞。唯一可能存在的漏洞是,如果开发人员以某种不安全的方式使用 .js 文件(我不是)。
最佳答案
从逻辑上讲,您实际上并不想禁止访问实际文件,因为这样您就无法在您的网页中使用它们。网络服务器不会区分浏览器请求文件作为呈现网页过程的一部分与某人只是手动下载文件。
因此,您第一个问题的答案是:您不能也不想这样做。如果您不希望用户访问,请将其从 web 文件夹中取出。如果需要它来呈现您的网站,那么您希望任何人都可以访问它,以便您的网站可以正确呈现。
至于为什么它被认为是一个漏洞,谁说的?我现在可以拉取 Facebook 使用的任何 JavaScript。或者,更重要的是,我可以访问美国银行或大通银行的网站并开始浏览他们的 JavaScript。如果我有一个帐户,我什至可以查看用户登录后使用的 JavaScript。
您可能需要担心的唯一一件事就是您始终需要担心的同一件事:暴露不应暴露的细节。我不确定您为什么会这样做,但是将您的数据库密码放在 JavaScript 文件中显然不是一个好主意。除了类似的事情,没有什么可担心的。
关于javascript - Scripts文件夹有漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9402974/