包含站点逻辑的安全性和JavaScript文件

Ale*_*lec 5 javascript security jquery

现在像jQuery这样的JavaScript库比以往更受欢迎,.js文件开始包含越来越多的网站逻辑.它如何以及从何处提取数据/信息,如何处理信息等等.这不一定是坏事,但我想知道这可能是一个安全问题.

当然,数据的真实处理仍然在后端使用PHP或其他语言进行,并且确保在此时不会发生任何不需要的事情是关键.但仅仅通过查看网站的.js(严重依赖于jQuery),它会告诉一个人可能比开发人员想要的更多.特别是因为现在每个浏览器都带有相当广泛的Web开发人员环境或附加组件.即使对于操纵DOM的新手来说也不是那么重要.一旦你弄清楚了什么代码,以及如何通过编辑DOM来影响它,就会开始"有趣".

所以我的主要关注点是:

  1. 我不希望每个人都能够看一个.js文件,看看到底(或者说:对于很大一部分)我的网站,Web应用程序或CMS是如何工作的 - 还有什么,它做什么,它是如何做等

  2. 我担心通过'揭开'这些信息,比我更聪明的人想出一种操纵DOM的方法,以便影响他们现在知道网站使用的JavaScript功能,可能绕过我实施的后端检查(因而错误地假设它们足够好了).

我已经为例如Web应用程序的不同部分使用了不同的.js文件.但是总有一些东西必须全球可用,有时这包含的东西比我想要公开的要多.而且因为它全部"在那里",谁说他们无论如何都找不到那些其他文件.

我有时会看到一个巨大的JavaScript,没有换行符等等.就像紧凑的jQuery文件一样.我确定有一些应用程序或技巧可以将您的普通.js文件转换为一个长字符串.但是,如果它可以做到这一点,是不是很容易将它变回更可读的东西(除了节省空间之外没有意义)?

最后,我在考虑是否有可能检测到.js文件的请求是否来自网站本身(通过在HTML中包含脚本),而不是直接下载.也许通过使用例如Apache的ModRewrite阻止后者,可以在HTML中使用.js文件,但是当有人试图访问它时,它被阻止.


你对此有何看法?我反应过度了吗?我应该尽可能地拆分我的JS,还是花更多的时间进行三重检查(后端)脚本并包括更多检查以防止造成伤害?或者是否有一些最佳实践来限制JavaScripts的暴露以及它们包含的所有信息?

cee*_*yoz 6

如果您已经正确设置,JavaScript中的任何内容都不应构成安全风险.尝试访问在JavaScript文件中找到的AJAX端点应该检查用户的权限,如果他们没有正确的权限则会失败.

让某人查看你的JavaScript只是一个安全风险,如果你做的事情就像打电话一样/ajax/secret_endpoint_that_requires_no_authentication.php,在这种情况下你的问题不是不安全的JavaScript,它是不安全的代码.

我有时会看到一个巨大的JavaScript,没有换行符等等.就像紧凑的jQuery文件一样.我确定有一些应用程序或技巧可以将您的普通.js文件转换为一个长字符串.但是,如果它可以做到这一点,是不是很容易将它变回更可读的东西(除了节省空间之外没有意义)?

这通常是缩小(以减少带宽使用),而不是混淆.它很容易逆转.有混淆技术会使所有变量和函数名称像"aa","bb"等一样无用,但它们可以通过足够的努力来实现.

最后,我在考虑是否有可能检测到.js文件的请求是否来自网站本身(通过在HTML中包含脚本),而不是直接下载.也许通过使用例如Apache的ModRewrite阻止后者,可以在HTML中使用.js文件,但是当有人试图访问它时,它被阻止.

它可以做到这一点,但任何半职能的攻击者都可以轻松解决这个问题.底线:没有你发送一个非特权用户的浏览器应该永远是敏感数据.