2009-07-22 150 views
1

我有一個客戶端運行一個ASP.NET應用程序。在裏面,有一個自包含的PHP wiki。問題在於wiki不會使用.NET身份驗證,所以直接請求http://foobar/path/wiki/的請求將會解析而不會強制登錄。在沒有JavaScript的情況下在PHP中檢測框架?

我的簡單解決方案是在iFrame中從強制認證的.aspx文件中運行PHP應用程序,然後使用PHP檢測頁面是否在框架外加載並重定向。

我知道這可以用JavaScript很容易完成,但我寧願在Wiki內容加載之前在服務器端進行測試。我需要幫助弄清楚這可以做到的方式。推薦人比較也許?

有什麼建議嗎?

謝謝!

回答

4

如果客戶端瀏覽器在框架,選項卡或專用窗口內加載頁面,則無法在服務器端進行分析。

你可以做的是讓你的.NET應用程序在認證PHP應用程序將讀取後設置一個cookie。如果cookie不存在,那麼重定向到認證頁面。

+0

僅僅檢查一個cookie的存在是不夠的。您需要一種方法來確定請求頁面已通過身份驗證的客戶端。如果我知道cookie的名稱,我現在可以在不進行身份驗證的情況下訪問wiki。 – 2009-07-22 16:23:59

1

即使使用JavaScript,這也不安全。人們可以簡單地請求Wiki頁面並忽略JavaScript。例如,我可以使用WGET在不進行身份驗證的情況下下載所有內容。

如果安全性很重要,我強烈建議找出一種方法讓PHP應用程序知道身份驗證。

最簡單的方法是,如果這全部在一臺服務器上,那麼.NET應用程序會在認證之後存儲某種令牌,在某處PHP可以訪問它。然後設置PHP維基將收到的cookie,並檢查該值是否是每個請求的有效會話。

相關問題