2011-05-20 71 views
1

我需要從Flash向本地代理腳本發出請求時爲Referer頭設置一個值。按照這個問題的建議:Facebook Proxy Loader Security,我需要檢查HTTP_REFERER以測試流量是否來自我自己的域。問題是,當使用像下面的代碼一樣的加載器時,不會發送Referer頭文件。通過加載程序加載的HTTP Referer()

package com.utils.loaders { 
    import flash.net.URLVariables; 
    import flash.net.URLRequest; 
    import flash.display.Loader; 

    public class FacebookProxyLoader extends Loader 
    { 
     protected static const PROXY_SCRIPT :String = "includes/facebookproxyloader.php"; 

     public function FacebookProxyLoader():void  
     {   

     } 

     public function proxyLoad(url:String):void 
     { 
      var request:URLRequest = new URLRequest(PROXY_SCRIPT); 
      var variables:URLVariables = new URLVariables();  
      variables['path'] = url; 
      request.data = variables; 
      super.load(request); 
     } 
    } 
} 

根據閃存文檔:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLRequestHeader.html只存在於Flash Player中的HTTP頭的支持非常有限,而使用Referer是禁止的。除了我的代理檢查$_SERVER['HTTP_REFERER']爲空之外,我還有什麼可以做的嗎? (這似乎是一個相當大的安全漏洞)

回答

0

您可以在加載Flash電影之前設置一個PHP會話嗎?然後,您可以始終驗證會話或將令牌傳遞給可以在服務器上驗證的閃存。無論如何,HTTP_REFERER並不是一個很好的安全修補程序,因爲任何人都可以輕鬆修改該頭文件。

0

雖然我不確定你可以嘗試使用BlazeDS代理並將其設置爲只接受來自您的域的傳入請求?

你將不得不重寫你的代碼從你的PHP代理在Java然後。

乾杯

+0

這可能是在一個最後期限內對低級AS3開發者的一點推動!不過謝謝。 – shanethehat 2011-05-20 09:39:10