2

我正在查看 NGINX SSI 模块,我想知道是否有办法阻止 SSI 上的“文件”选项。

http://nginx.org/en/docs/http/ngx_http_ssi_module.html

所以有人不这样做

 <!--# include file="/etc/passwd" -->

我在包含文件方面找不到太多关于安全性的信息,有人知道吗?

4

1 回答 1

2

首先,您可以完全确定不会发生这种情况的唯一方法是以非 root 用户身份运行 nginx(这样做还有很多其他原因,我相信您已经这样做了)。

要考虑的另一件事是,SSI 通常应该被视为特权代码,就像 CGI 脚本一样。您通常不应允许不受信任的用户使用它们。

也就是说,您的问题的答案是 nginx 处理(源代码)SSIinclude指令,方法是相同地处理fileanduri选项并将它们传递给ngx_http_subrequest. 这与为给定文件提供文件请求基本相同,特别是名称是相对于root当前有效的指令进行解析的。所以仍然有一些安全考虑,但总的来说,它比 SSI 解析器自己简单地打开和读取文件要安全得多。

于 2014-12-05T19:09:00.417 回答