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 是否是对服务的请求的发起者?

4

4 回答 4

3

你不能可靠地做到这一点——毕竟,它可能是一个代理,或者有人可能已经窥探了你的 Flash 组件的流量,以找出如何在没有 Flash 版本没有任何限制的情况下重用你的 API。

要进行基本的健全性检查以区分输出,那么您可以简单地添加一个标志来表示“请使用 Flash API 版本”;但是对于所有 HTTP 通信,伪造所需的任何内容都相对简单。

于 2009-04-08T15:59:35.407 回答
2

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

编辑:请注意,这绝对不是“可靠的”,但您真的需要一种可靠的检测方法还是仅仅有效的检测方法?这行得通,只是不安全,如果你需要它来保证安全,你就做错了,因为不可能知道实际使用的是什么客户端。

于 2009-04-08T16:01:41.547 回答
1

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

于 2009-04-15T18:11:44.740 回答
0

最安全的方法(提供的简单选项)是正则表达式匹配其中将包含 .swf 的引荐来源网址。

这比 &flash=true 的查询字符串/表单参数更难欺骗。使用可以发送虚假 HTTP 标头(引荐来源网址)的黑客工具当然是可以破解的,但在所提供的选项中,它需要付出最大的努力。

于 2012-04-25T17:50:11.197 回答