【发布时间】: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