2012-02-17 56 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規範。我所做的是在我的正常響應者代碼中實現我自己的授權方案。這對我的目的來說很好,但更復雜的網站可能真的感受到了這一點的痛苦。 :(如果有人爲此提出了更好的答案,請回復,我最終會考慮更改答案給你的答案。