Scripts文件夹有漏洞吗?

时间:2012-02-22 21:05:17

标签: javascript jquery asp.net security

在我的.NET Web应用程序中,我通常有一个Scripts文件夹,其中包含我的所有JavaScript文件 - 大部分时间都是jQuery,偶尔会出现某种类型的JavaScript库。

我正在通过名为Nexpose的扫描程序对我的某个网站运行漏洞扫描,它告诉我Scripts文件夹对全世界开放 - 这意味着未经身份验证的用户可以下载文件夹中包含的JavaScript文件,这是一个关键的漏洞。根据Nexpose,Scripts文件夹应限制为仅允许经过身份验证的用户访问它。这引出了我的第一个问题。

如何将Scripts文件夹限制为仅经过身份验证的用户?我尝试将web.config文件放入Scripts文件夹并拒绝以这种方式访问​​所有未经身份验证的用户,但它无法正常工作。我能够自己确定这个,但是进入我网站的登录页面,但没有登录,然后输入https://mywebsite/scripts/menubar.js,确定它允许我下载menubar.js文件。

第二个问题 - 为什么这被认为是一个漏洞?我试图通过这里的可能性来推理我的方式,但我没有想出太多的东西。它是一个漏洞只是因为乔3333 h4x0r可以找出我正在使用的各种库,然后可能使用已知的漏洞攻击它们?

更新

绝大多数答案似乎是,因为.js文件可以在客户端的浏览器上打开和读取,所以不应该存在漏洞。可能存在的唯一漏洞是,如果开发人员以某种不安全的方式使用.js文件(我不是这样)。

5 个答案:

答案 0 :(得分:5)

逻辑上,您不希望实际禁止访问实际文件,因为您无法在网页中使用它们。网络服务器不区分请求文件作为呈现网页过程的一部分的浏览器与仅手动下载文件的人之间的区别。

结果,你的第一个问题的答案是:你不能也不愿意。如果您不希望用户访问,请将其从Web文件夹中取出。如果需要呈现您的网站,那么您希望任何人都可以访问它,以便您的网站可以正常呈现。

至于为什么它被认为是一个漏洞,谁说它是?我现在可以使用任何Facebook使用的JavaScript。或者,更重要的是,我可以去美国银行或大通的网站,并开始查看他们的JavaScript。如果我有一个帐户,我甚至可以看一下用户登录后使用的JavaScript。

您可能需要担心的唯一问题是您始终需要担心的事情:暴露不应公开的细节。我不确定你为什么这么做,但是将数据库密码放在JavaScript文件中显然不是一个好主意。除此之外,没有什么可担心的。

答案 1 :(得分:2)

在大多数情况下,这不是一个漏洞。考虑所有具有匿名流量的大型公共网站和/或很容易成为经过身份验证的用户(谷歌,eBay,亚马逊等)。这些网站也有一些最复杂的脚本。

要注意的更微妙的事情是你想要保护的其他文件。例如,如果用户在查看之前必须登录您的网站并购买文档,视频,图片等,那么它当然不应该位于可公开访问的文件夹中。

答案 2 :(得分:1)

是。您应该将大部分处理保留在服务器端,因为大多数(如果不是全部)客户端脚本都可以编辑,等等。大多数网站使用Javascript,所以简单地使用它并不危险,你只需要小心你用它做什么。

此外,要回答您的第一个问题,如果未经身份验证的用户也需要,请不要保护它们。

答案 3 :(得分:1)

听起来有些安全套件有一个发痒的触发手指。我能看到的唯一两个问题是,如果有人选择在此处指向您的 jQuery或您的 - 插入库名称,您最终可能会将服务器作为CDN借出 - 或者(现在这是一个真正的安全风险)如果您还提供任何可能构成潜在威胁的动态.js文件。我能想到的唯一另一件事是,如果您将“自定义”应用程序js与所有可能发现您的终端(Web服务等)的库混合使用,并尝试查看它们是否安全... <强大>但就是这样!仅此而已......(除非你做了一些非常愚蠢的事情,就像硬编码密码或那里的东西......哈哈)

答案 4 :(得分:1)

因此,攻击并不是人们可以编辑脚本攻击让Web服务器随意写入目录。您需要做的是确保它们是只读文件。 chmod 400或windows read。在深度防御(DiD)方面,您希望确保Web服务器是无权登录系统的非特权用户。此外,您需要在服务器上执行所有数据清理,无论您在客户端执行什么操作,因为您无法控制客户端。通常,这涉及确保在服务之前清除来自Web和数据库的所有数据。我最喜欢做的事情之一是将任意javascript插入到数据库中并观察它在UI中执行的操作,因为开发团队认为一切都很好,因为他们已经清理了一次。

如果有必要,我可以提供有关保护系统的更多详细信息。