【问题标题】:Can a user see all the files in my website?用户可以查看我网站中的所有文件吗?
【发布时间】:2020-10-17 14:04:21
【问题描述】:

我对 Web 开发还很陌生。我正在使用 Node.js 和 express 创建一个网站。我需要在这些文件中存储一些非常私密的信息(处理付款的代码等),但也需要在服务器端存储一些客户端无法更改/查看的内容。我已经搜索了互联网并且没有运气,那么用户在使用我的网站时可以访问哪些文件? (这就是我组织一切的方式)...

我怎样才能确保这些私人信息不被泄露。我们将不胜感激所有帮助!

谢谢!

【问题讨论】:

  • 屏幕截图中的所有内容看起来都像是一个前端应用程序。前端或客户端中的大多数东西都无法得到保护。 Secret 需要位于服务器端,如果您愿意,可以是 aws lambda 等。
  • 如果您正确设置服务器,则不会向浏览器发送您不想发送的任何内容。你可以控制它。应该保留在服务器上的秘密可以受到保护,并且永远不会发送给客户端。您必须正确设置您的服务器以确保是这种情况。
  • @DCTID - 这还不是所有前端的东西。 app.js 可能是 nodejs 代码。 views 是服务器端模板。 routes 是快速路由定义。

标签: javascript node.js amazon-web-services express


【解决方案1】:

运行时环境

首先,您的运行环境是 Node.js,因此您的逻辑存储在服务器端,其他任何东西(例如 javascript、图像、css、html)都被视为静态资源,您可以通过转到 Resources 在浏览器中观看它们开发者工具中的 /Source 选项卡(取决于您使用的浏览器)。

JavaScript

浏览器确实解决了数学问题,然后总是向控制台发送响应!

客户端通过客户端机器中的浏览器运行。例如

var mathInBrowser = (1 + 1);
    
console.log("mathInBrowser")

NodeJS

服务器解决数学问题,然后仅在请求时将响应/值发送到特定路由。所以浏览器不知道这个等式,它只知道值。因为 Node.js 是服务器端运行时环境,它在服务器内运行 JavaScript 文件等,并且只发送需要发送到浏览器或 API 的内容。例如

var mathInServer = 1 + 1;

app.get('/math', function(req, res) {

res.send("Result is: " + mathInServer)
})

数据库

您可以将请求中的数据发送到除了通过身份验证过程之外无法访问的数据库。这样,您就可以将有价值的信息存储在只有授权人员才能访问的位置。

重要

不要将重要信息存储在公用文件夹中,以为没人会认出!作为公共资源,如果您将其作为静态资产上传,任何人都可以看到您的文件和代码。有时,搜索引擎会爆炸严重的客户信息、链接、文件。

【讨论】:

  • 非常感谢!澄清一下,在使用 node.js 服务器端时,我的服务器信息是安全的吗?
  • 至于服务器信息,如果你输入终端curl -I http://localhost:APP-PORT你可以请求HEAD响应应该是服务器信息例如X-Powered-By你的情况应该是Express,还有更多有用的信息,如请求资源的content-type,支持的HTTP协议..等。因此,我建议开始使用Nginx 来保护您的应用程序。这样,您可以隐藏您的应用程序端口等等。您必须通过 Node.js 库或至少通过支持 SSL 的 Nginx 保留代理采用 https。在您采用时,将安全性视为层 lev.0、lev.1、lev.2 ..等。
猜你喜欢
  • 2021-10-11
  • 2011-01-31
  • 2022-11-07
  • 2021-01-27
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 2019-04-17
  • 1970-01-01
相关资源
最近更新 更多