【问题标题】:nodejs: allow client to use scripts but hide scripts from end-usersnodejs:允许客户端使用脚本但对最终用户隐藏脚本
【发布时间】:2017-04-16 06:09:53
【问题描述】:

我在 NodeJS 上的“functions”目录中的静态 HTML 网站中有函数。这些函数到达诸如“登录”之类的端点并通过 XMLHTTPRequest 获取“/用户”信息。

我不喜欢将我的端点暴露给最终用户的想法。是否可以将我的“功能”目录放在我的静态 html 目录之外,例如:

 HTML
     index.html
 FUNCTIONS
     my_func.js

还可以从 HTML 中的 index.html 访问我的功能,例如:

<script type="text/javascript" src="../FUNCTIONS/my_func.js"></script>

我已经知道这是不可能的,因为我试过了,但我得到了一个 404:www.mywebsite.com/functions/my_func.js

但实际上这不是 URL,因为没有 URL,因为我不想将我的“函数”目录托管在可公开访问的 URL 中。

我试过这个:How do I prevent Node.js / Express serving up my application's source code?

创建一个“路线”,以便如果在我的路径中看到“功能”,例如:

    <script type="text/javascript" src="../functions/my_func.js"></script>

它应该重定向到 nodejs 上公共托管 HTML 之外的目录,但它不起作用

我也在 NGINX 级别做过:https://serverfault.com/questions/310124/nginx-redirect-url-containing-php

if ($request_uri ~ .*.functions.*) 
{
    return 410;
}

这确实阻止了函数目录中的 js 被看到(当我将 FUNCTIONS 目录放在 HTML 目录中时)。但是,这也使 index.html 无法加载 js 函数。

【问题讨论】:

  • 为什么要隐藏 API 函数?如果用户使用您的网页,他可以轻松地在各种浏览器的网络选项卡中检查 api 端点调用,您的 api 应该通过令牌或会话本身是安全的
  • 我想是偏执狂。并且好奇是否有更好的方法至少使查看端点及其使用方式变得更加困难。脚本也使用 sessionStorage 之类的东西,我知道它应该是安全的,但我不喜欢尽可能公开变量名称的想法
  • 我可以理解你,但用户需要连接到你的 api,所以浏览器,例如最终用户将始终看到对您的端点发出的请求,即使您将其隐藏在您的 javascript 代码等中。我同意@rsp

标签: html node.js security express import


【解决方案1】:

您的问题的答案是:不,这是不可能的。

如果您在静态目录之外托管“函数”脚本,那么任何人都无法访问它。如果你把它放在可以访问的地方,那么用户也可以阅读它。

没有办法绕过它。客户端运行的任何代码都可能被客户端读取。甚至二进制文件也可以反汇编,因此不仅适用于 JavaScript 之类的语言,而且适用于编译型语言。

即使人们看不到代码本身,他们也始终能够在浏览器的开发人员工具中看到网络流量,在那里他们可以看到发送和接收的所有端点、参数和数据。

不过,您可以做的是确保每个人都只能对这些端点执行您希望他们执行的操作。因此,您的端点应始终使用例如检查谁在执行请求。身份验证令牌并执行谁可以做什么的规则。这样人们就可以访问您的端点,但他们只能做他们可以用您的前端做的事情。

【讨论】:

  • 感谢回复。如果我只允许在 ip 地址为 xyz 的情况下访问函数目录,那么在 NGINX 代理级别如何?我想这没有意义......想法? (我确实有 oauth2 访问令牌)
  • 您只能为具有特定 ip 的人提供功能,但具有其他 ip 的人将根本无法使用您的应用程序。每个可以使用您的应用程序前端的人都将能够看到您的端点和整个流量、请求、响应、参数、标头和所有内容。只需按 Ctrl+Shift+I 即可。
猜你喜欢
  • 2016-08-23
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 2016-09-12
  • 2018-08-23
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多