如何阻止Node.js/Express提供我的应用程序的源代码?

Rob*_*Rob 12 security node.js express

我从没想过这会是Node.js和Express的问题,但是我疯狂地想到要在浏览器中键入我的Node.js Express项目中的一个源文件的位置 - 类似于:

http://www.mywebsite.com/mynodejsapp/app.js

令我非常恐怖的是,我的应用程序的源代码突然出现,公开供所有人查看.

那么,除此之外:我如何在Node.js/Express中停止它?

我的设置代码非常简单:

var app = express();
app.configure(function() {
    app.use(express.static('/home/prod/server/app/public'));
});
app.listen(8888);
Run Code Online (Sandbox Code Playgroud)

为了澄清,这就是我的文件夹结构:

/home/prod/server/
/home/prod/server/app.js
/home/prod/server/public/

被各种文件种种打算,供公众查阅下生活/public.我的所有服务器源代码都存在/server/,我对Express的静态文件夹配置的理解是,静态文件夹是Express愉快地从文件系统提供文件的唯一地方.

有任何想法吗?

Thi*_*ter 10

从你发布的内容来看,它真的闻起来就像你输入的URL是由Apache/nginx/...提供的,你确实把你的节点应用程序放在了文档根目录中.这个(以及任何类似的)案例的答案很简单:

永远不会将任何源代码文件放在文档根目录或其他HTTP可访问文件夹中.在你的情况下,/home/prod/server/app/public应该只包含客户端的东西(HTML,CSS,图形,(缩小)客户端JS)和nginx不应该有任何高于此文件夹的文件根目录.

  • 那么你的nginx配置很可能是一个问题.尝试将`root/var/empty`(或其他一些空文件夹)添加到你的nginx配置中.还检查(假设节点请求登录stdout)这些"坏"请求是否曾经命中过你的节点实例.我不知何故怀疑它. (2认同)