使用Loader load()传递HTTP Referer

时间:2011-05-20 09:28:54

标签: flash actionscript-3 security proxy http-referer

在从Flash发出对本地代理脚本的请求时,我需要为Referer标头设置一个值。根据此问题中的建议:Facebook Proxy Loader Security,我需要检查HTTP_REFERER以测试流量是否来自我自己的域。问题是当使用类似下面代码的加载器时,不会发送任何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);
        }
    }
}

根据Flash文档:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLRequestHeader.html,Flash Player中对HTTP标头的支持非常有限,并且禁止使用Referer。除了让我的代理检查$_SERVER['HTTP_REFERER']为空之外,我能在这里做些什么吗? (这似乎是一个相当大的安全漏洞)

2 个答案:

答案 0 :(得分:0)

虽然我不确定您是否可以尝试使用BlazeDS代理并将其设置为仅接受来自您域的传入请求?

然后你必须在java中重写你的php代码中的代码。

干杯

答案 1 :(得分:0)

你可以在加载flash电影之前设置一个php会话吗?然后,您始终可以验证会话或将令牌传递给可以针对服务器验证的闪存。 HTTP_REFERER无论如何都不是一个很好的安全补丁,因为任何人都可以轻松地修改那个标题。