运维开发网

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

运维开发网 https://www.qedev.com 2020-06-17 18:39 出处:网络 作者:运维开发网整理
现在像jQuery这样的 JavaScript库比以往更受欢迎,.js文件开始包含越来越多的网站逻辑.它如何以及从何处提取数据/信息,如何处理信息等等.这不一定是坏事,但我想知道这可能是一个安全问题. 当然,数据的真实处理仍然发生在使用PHP或其他语言的后端,并且确保在那一点上不会发生任何不需要的事情是关键.但仅仅通过查看网站的.js(严重依赖于jQuery),它会告诉一个人可能比开发人员想要的更
现在像jQuery这样的 JavaScript库比以往更受欢迎,.js文件开始包含越来越多的网站逻辑.它如何以及从何处提取数据/信息,如何处理信息等等.这不一定是坏事,但我想知道这可能是一个安全问题.

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

所以我的主要关注点是:

>我不希望每个人都能够查看.js文件并确切地看到(或者更确切地说:大部分)我的网站,网络应用程序或CMS的工作原理 – 它是什么,它做什么,它是怎么做的它等

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

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

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

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

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

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

让某人查看你的JavaScript只是一个安全风险,如果你正在做一些破坏,比如调用/ajax/secret_endpoint_that_requires_no_authentication.php这样的东西,在这种情况下你的问题不是不安全的JavaScript,它是不安全的代码.

I sometimes see a huge chuck of JavaScript without line breaks and all that. Like the compact jQuery files. I’m sure there are applications or tricks to convert your normal .js file to one long string. But if it can do that, isn’t it just as easy to turn it back to something more readable (making it pointless except for saving space)?

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

Lastly I was thinking about whether it was possible to detect if a request for a .js file comes from the site itself (by including the script in the HTML), instead of a direct download. Maybe by blocking the latter using e.g. Apache’s ModRewrite, it’s possible to use a .js file in the HTML, but when someone tries to access it, it’s blocked.

它可以做到这一点,但任何半职能的攻击者都可以轻松解决这个问题.结论:您发送的非特权用户的浏览器不应该只是敏感数据.

0

精彩评论

暂无评论...
验证码 换一张
取 消