我正在查看 NGINX SSI 模块,我想知道是否有办法阻止 SSI 上的"file"选项。
http://nginx.org/en/docs/http/ngx_http_ssi_module.html
这样就不会有人这样做
<!--# include file="/etc/passwd" -->
我找不到太多有关包含文件的安全性信息,有人知道这方面的情况吗?
最佳答案
首先,你可以完全确定这种情况不会发生的唯一方法是以非root用户身份运行nginx(还有很多其他原因这样做,我确信你正在这样做已经)。
另一件需要考虑的事情是,SSI 通常应被视为特权代码,就像 CGI 脚本一样。您通常不应允许不受信任的用户使用它们。
也就是说,您问题的答案是 nginx 通过处理 file
和 uri
来处理 ( source code ) SSI include
指令> 选项相同并将它们传递给 ngx_http_subrequest
。这本质上与为给定文件提供文件请求相同,特别是名称是相对于当前有效的 root 指令解析的。所以还有一些security considerations ,但总的来说,它比 SSI 解析器自己简单地打开和读取文件要安全得多。
关于nginx SSI 模块;禁用文件包含?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27322300/