2009-04-08 53 views
3

我需要能够检测到Flash是否是ASP.NET服务请求的发起者。原因是当响应状态代码不是200时,Flash无法处理SOAP消息。但是,我允许异常通过SOAP Web服务冒泡,因此SOAP服务器故障的状态代码为500。在Flash 10之前,我能够检查referrer属性,如果以.SWF结尾,我将状态代码更改为200,以便我们的Flex应用程序可以适当地处理SOAP消息。但自Flash 10推出后,不再发送引用者。我想使用x-flash-version头文件,但似乎只在使用IE而不是FF时发送。如何可靠地检测Flash是否是服务请求的发起者?

这使我想到我的问题:如何可靠地检测Flash是否是服务请求的发起者?

回答

3

不能可靠做到这一点 - 毕竟,它可能是一个代理,或者可能有人窥探您的Flash组件的交通工作,如何重用你的API没有任何限制的Flash版本不会有。

对于区分输出的基本健全性检查,您可以简单地添加一个标志来说“Flash API版本请”;但是对于所有的HTTP通信来说,伪造任何需要的东西都是相对微不足道的。

+0

我们认为,由于我们无法可靠地检测到Flash是否是请求的发起者,我们没有花费更多的精力来解决这个问题。 – 2009-08-28 12:50:56

2

http://domain.com/path/to/target?flash=true怎么样?如果您所做的只是更改api或返回不同的错误,则不需要安全的检测方法。

编辑:请注意,这绝对不是“可靠的”,但你真的需要一个可靠的检测方法或只是工作?这有效,它不安全,如果你需要它是安全的,你做错了什么,因为不可能知道客户端实际上在使用什么。

1

您可以检查用户代理(但它可以被伪造),Flash使用类似“的Adobe Flash”

+0

其实我在这里做了一个flash电影做一个提供浏览器用户代理的http请求。 – cmc 2011-07-19 20:36:26

0

最安全的方式(的呈现易选项)对正则表达式匹配引荐网址这将有.swf在里面。

这将是一个很难欺骗比查询字符串/形式参数& flash = true。使用黑客工具可以发送错误的HTTP头(引用者),但这显然是可以破解的,但是在所提供的选项之外,它会花费最多的努力。

相关问题