2012-02-17 36 views
2

我正在使用FastCGI和lighttpd编写C++的Web应用程序。我以这种痛苦的方式来做这件事的原因是因为最终产品会在嵌入式设备上运行。最初,我不知道FCGI模式;我认为一切都基本上是一个响应者。然后我了解了授权人,我一直在努力为其提供支持。FastCGI授权人支持lighttpd破解?

Lighttpd似乎并没有把授权者放在静态内容之前,但是当我试图保护另一个FCGI脚本时,它给了我403禁止。

我已经做了很多的研究,并得出一些结论:

  1. Lighttpd's support"Variable-VAR_NAME: value"从授权传递给后续FCGIs被打破了。第一个链接有一个补丁,但修补和编译FCGI将是一个婊子半,因为我必须为x86和ARM做,然后我必须支持它。 (目前,我们正在使用商业BSP只是让我们不必应付这样的东西。)
  2. 在第一个链接的语言意味着你可以保护与授权人的动态内容,但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" 
    )) 
) 

把它包起来,任何人都可以给我使用FCGI授权来控制访问其他FCGI脚本(/二进制文件)的指导,而不是只是静态文件,在lighttpd?这也将是很好的变量传递工作。感谢您阅读这些!

回答

1

我所见过的一切似乎都表明,FastCGI授权人不适用于lighttpd规范。我所做的是在我的正常响应者代码中实现我自己的授权方案。这对我的目的来说很好,但更复杂的网站可能真的感受到了这一点的痛苦。 :(如果有人为此提出了更好的答案,请回复,我最终会考虑更改答案给你的答案。