lighttpd中的FastCGI授权支持是否破碎?

时间:2012-02-17 15:10:07

标签: embedded webserver authorization fastcgi lighttpd

我正在使用带有lighttpd的FastCGI在C ++中编写webapp。我这样做的原因是痛苦的,因为最终产品将在嵌入式设备上运行。最初,我不知道FCGI模式;我以为一切基本上都是响应者。然后我了解了授权者,并且我一直在努力为它提供支持。

Lighttpd似乎可以毫不费力地将授权者放在静态内容之前,但是当我尝试保护另一个FCGI脚本时,它给了我403禁止。

我做了很多研究,得出了一些结论:

    {li> Lighttpd's support从授权程序传递到后续FCGI的"Variable-VAR_NAME: value"被破坏。第一个链接有一个补丁,但补丁和编译FCGI将是一个婊子半,因为我必须为x86和ARM做,然后我必须支持它。 (我们目前正在使用广告BSP,因此我们无需处理此类内容。)
  1. 第一个链接中的语言暗示您可以使用授权人保护动态内容,但this bug report则另有说明。当然,它在没有评论的情况下被关闭了,这是有用的stbuehler。 (我知道他的板块很多。)
  2. 为了记录,我正在使用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授权程序来控制对lighttpd上其他FCGI脚本(/二进制文件)的访问,而不仅仅是静态文件吗?让变量传递工作也很好。感谢您阅读此内容!

1 个答案:

答案 0 :(得分:2)

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