nodejs:允许客户端使用脚本但隐藏最终用户的脚本

时间:2016-12-01 14:42:24

标签: html node.js security express import

我在NodeJS上的静态HTML网站中的'functions'目录中有函数。这些函数点击了像'login'这样的终点,并通过XMLHTTPRequest获取'/ user'信息。

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

 HTML
     index.html
 FUNCTIONS
     my_func.js

然后从HTML中的index.html访问我的FUNCTIONS,如:

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

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

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

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

创建一个'route',以便在我的路径中看到'functions',如:

    <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函数。

1 个答案:

答案 0 :(得分:2)

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

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

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

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

但是,您可以做的是确保每个人只能按照您希望他们对这些端点执行的操作。因此,您的终端应始终使用以下方式检查谁在执行请求一个身份验证令牌,并执行谁可以做什么的规则。通过这种方式,人们将能够访问您的终端,但他们只能做他们可以对您的前端做的事情。