这似乎是一个奇怪/广泛的问题,但是服务器如何知道不呈现Express.js文件和不公开内容,类似于任何人都可以看到javascript文件并读取正在执行的脚本的方式。像Heroku这样的节点服务器会保护它们吗?对不起,我只是表达和结点。它类似于在Apache服务器中隐藏和保护PHP语法/脚本的方式吗?
答案 0 :(得分:2)
这取决于服务器配置。在配置不当的服务器上,.js文件可能是可访问的。
使用nodejs / expressjs服务器,您define a base folder that contains public files例如public
和该公用文件夹外部的文件不可见,因为服务器不会将它们提供给外部。如果您配置了错误的目录,例如.
,然后expressjs代码文件将可供浏览器使用,并按原样呈现给它们,从而潜在地泄露不安全的数据,例如配置,密码等。由于默认配置和所有代码示例均确保将public
定义为公用文件夹,因此意外配置错误的风险较低。
如果您在同一主机上运行apache httpd或其他Web服务器,则必须确保节点应用程序不是在任何vhost的Webroot内,否则文件也可能可见,因为对于apache httpd,它们看起来也像简单的静态文件,可以按原样发送到浏览器。
至少在apache httpd或nginx的情况下,它与PHP文件不同,因为它们通常被配置为使PHP文件是要执行的文件,而不是要提供给外部的静态文件。但是,如果Apache httpd或nginx由于未安装PHP或未配置而对PHP不了解,那么webroot内部的PHP文件也将按原样显示给公众。可以使用.htaccess文件阻止显示Apache httpd的文件。