2010-11-11 61 views
0

設置:Zend框架,SSL路線,的fancybox,和XSS問題

  • 我使用Zend框架
  • 我有一個控制器插件,檢查路線對我的應用程序設置和重定向到https如果需要或標準的http,如果沒有。我基於我的控制器插件this blog entry
  • 我的形式「彈出」使用Fancybox

問題:

如果我是一個非SSL頁面上,當我開始登錄時,正確的形式出現,並進行登錄過程,但調用父級關閉Fancybox實例的JavaScript不能這樣做,因爲這些域現在不同 - https與http

登錄表單和其他一些也可以從任意上下文中的頁面調用,所以我我不知道如何解決這個問題。

是關閉的fancybox實例中的JavaScript:

if (window.self !== window.top) { 
    // is nested 
    parent.$.fancybox.close(); 
} 

回答

0

我解決了這個問題,方法如下:

  1. 增加了新的SSL路由規則是allow_ssl和我的控制器插件添加了對它的支持。這allow_ssl不是HTTP和HTTPS之間切換路線。這修復彈出窗口,可以從安全頁面,在那裏它們是否安全與否並不重要調用。
  2. 加在我的登錄過程進行檢查,檢查的登錄發起請求,並設置一個is_ssl標誌的「請求」會話命名空間。一旦登錄成功後我檢查標誌,並重定向到通過HTTP或HTTPS的close-popup行動。該close-popup行動是一個具有allow_ssl標誌。