【发布时间】:2012-02-17 15:10:06
【问题描述】:
我正在使用带有 lighttpd 的 FastCGI 用 C++ 编写一个 webapp。我这样做很痛苦的原因是因为最终产品将在嵌入式设备上运行。最初,我不知道 FCGI 模式;我认为一切基本上都是响应者。然后我了解了授权者,并且一直在尝试启用对它的支持。
Lighttpd 似乎可以在静态内容前设置授权者,但当我尝试保护另一个 FCGI 脚本时,它给了我 403 禁止。
我做了很多研究,得出了一些结论:
- 从授权方到后续 FCGI 的 "Variable-VAR_NAME: value" 的 Lighttpd's support 已损坏。第一个链接有一个补丁,但是修补和编译 FCGI 会很麻烦,因为我必须为 x86 和 ARM 做这个,然后我必须支持它。 (我们目前使用的是商业广告BSP,这样我们就不必处理类似的事情了。)
- 第一个链接中的语言暗示您可以使用授权者保护动态内容,但this bug report 另有说明。当然,一直乐于助人的 stbuehler 没有发表评论就关闭了它。 (我知道他有很多事情要做。)
作为记录,我正在使用 lighttpd 1.4.28(桌面和 ARM)和自定义身份验证(使用 SHA-512 在客户端上散列的密码),因为 (1) TLS 对于此应用程序是不可能/不必要的,(2)基本的 HTTP 身份验证还不够好,(3) 在 lighttpd 中摘要身份验证被破坏了,(4) 这并不是真正的安全系统。
这是我的 lighttpd.conf 文件的相关部分:
fastcgi.server = (
"main.fcgi" =>
(( "mode" => "responder",
"bin-path" => "/var/fcgi/main.fcgi",
"socket" => "/tmp/fcgi.sock",
"check-local" => "disable",
"max-procs" => 1
)),
"/" =>
(( "mode" => "authorizer",
"bin-path" => "/var/fcgi/auth.fcgi",
"socket" => "/tmp/fcgi.sock",
"check-local" => "disable",
"max-procs" => 1,
"docroot" => "/var/fcgi"
))
)
总结一下,谁能指导我在 lighttpd 上使用 FCGI 授权器来控制对其他 FCGI 脚本(/二进制文件)的访问,而不仅仅是静态文件?让变量传递工作也很好。感谢您阅读本文!
【问题讨论】:
标签: embedded webserver authorization fastcgi lighttpd