在从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']
为空之外,我能在这里做些什么吗? (这似乎是一个相当大的安全漏洞)
答案 0 :(得分:0)
虽然我不确定您是否可以尝试使用BlazeDS代理并将其设置为仅接受来自您域的传入请求?
然后你必须在java中重写你的php代码中的代码。
干杯
答案 1 :(得分:0)
你可以在加载flash电影之前设置一个php会话吗?然后,您始终可以验证会话或将令牌传递给可以针对服务器验证的闪存。 HTTP_REFERER无论如何都不是一个很好的安全补丁,因为任何人都可以轻松地修改那个标题。