有一些在线指南展示了如何让nodejs在服务器上运行,但它们往往跳过一些关于安全性的细节。这是个有点麻烦的问题,我不知道从哪里开始。我想知道是否有人能澄清以下细节。
首先,我的设置:
PM2,我可以使用pm2 start app.js运行应用程序。
我的nginx配置:
服务器{侦听80;server_name mydomainname.com;位置/{ proxy_pass http://localhost:8080;proxy_http_version 1.1;proxy_set_header升级$http_upgrade;proxy_set_header连接“升级”;proxy_set_header主机$host;proxy_cache_bypass $http_upgrade;}}我担心的是:
(1)应用程序-主app/是否应该驻留在/home/appuser中
public/是否应该位于不同的位置,而不是与应用程序文件位于同一个文件夹中。我不希望应用程序源文件泄漏,特别是我的config.js,它包含一些敏感信息,如我的数据库和电子邮件的详细信息。
如果应该移动它,则/public相对于app/居住的位置app/上的权限是chown -R appuser:appuser app/,因此用户拥有所有文件。我应该在我的应用程序文件夹上设置其他权限吗?(2) PM2 --既然我在本地安装了nodejs及其模块,那么在服务器重新启动之后,如何安全地让pm2重新启动nodejs应用程序?
pm2-init.sh将生活在/etc/init.d/中,如果我已经在全局上使用sudo安装了pm2,那么这种情况就会自动发生。
如何让pm2安全地使用我的非sudo用户重新启动我的应用程序?(3) NGINX
public/服务,我如何通过nginx安全地为它们服务:
http://mydomainname.com/public404。但是,是否有人可以绕过这个问题,恶意地让我的应用程序或nginx浏览其他目录呢?
ie,在app目录之外
http://mydomainname.com/../../etc/path/to/secrets
或者,就在我的应用程序中
http://mydomainname.com/public/../../config.js
如果可能的话,是否可以在nginx或nodejs中设置额外的安全防范措施来防止这种情况发生?发布于 2015-05-31 20:41:34
node:node-developer。然后在node用户下启动应用程序。其中node是开发人员的一个组。并将所有文件权限设置为770。node用户中,并作为init脚本启动pm2nginx用户下运行。如果文件是公开的,则将其设置为nginx:nginx。甚至用户也可以做public/../../something。Nginx没有进入它的权利。https://stackoverflow.com/questions/30561603
复制相似问题