问题标签 [amf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1476 浏览

c# - AMF 通过用 .net 编写的 BinarySocket

我有一个 Windows 服务,它作为二进制套接字向弹性应用程序发送数据。一旦我尝试发送字符串或整数或任何其他本机数据类型,一切都很好。

我什至成功地将 JSon 从服务器发送到客户端,在 Flex 上对其进行解析。

我想将 AMF 对象发送给客户端。

意思是,我有一个名为 User 的类,我想用数据填充它并将其发送到客户端,我希望它映射到客户端上的对象。

我怎样才能做到这一点?

0 投票
2 回答
1598 浏览

php - AMFPHP AMF0 和 AMF3

它们之间有什么区别?

0 投票
2 回答
6334 浏览

c# - 在 C#/Mono 中序列化到/从 Adob​​e AMF?

使用 Zend_Amf 可以将 php 对象序列化为 Adob​​e AMF 格式。是否有用于将 C# 对象序列化/反序列化到 AMF 的等效库?

我正在使用 Mono 2.4。

0 投票
1 回答
812 浏览

ruby-on-rails - 那里有任何 Ruby AMF 客户端吗?

我正在寻找一种在 Ruby(Rails) 中推送/接收 AMF0 / AMF3 消息的方法。
从我读到的 ruby​​AMF 只能充当服务器。

我需要的是一个允许客户端访问 FMS/Wowza 的库。

有任何想法吗?

0 投票
1 回答
1136 浏览

ruby - 如何在 Ruby 中解析 A​​MF 数据?

所以我看到有一些Rails 插件可以 提供 AMF 服务。但是,是否有一个库可以在 Ruby 环境中用作 AMF 客户端:读取 AMF 数据并将其反序列化为 Ruby 对象?

如果没有,我怎样才能最好地使用其他语言构建的工具?我想我可以用 Python 或 Java 或其他任何东西编写一些东西,然后通过反引号直接从 Ruby 调用它……但我首先要确保没有更好的选择。

谢谢!

0 投票
2 回答
1027 浏览

apache-flex - ActionScript:BlazeDS/AMF 和类接口的类型强制问题

我在 Java/Hibernate/BlazeDS/Flex-Setup 中遇到类型强制问题。

首先,我的课程如下所示:


--- JAVA ---

接口 I
(抽象) A 类实现 I
B 类扩展 A

--- 动作脚本 ---

接口 I
Class A 实现 I
Class B extends A


我在所有 ActionScript-Classes/Interfaces I、A 和 B 中都有 RemoteClass-Meta-Tags。包结构和类/接口名称完全相同。

现在问题来了:我的 Java 服务通过 Hibernate 从我的数据库中成功检索了 B 类对象。我得到了另一个类 C,它具有接口类型 I 的成员属性,因此应该可以分配 B 类型的对象。但由于某种原因,我收到以下错误消息:

TypeError:错误 #1034:无法将 Object@28b44a89 转换为 package.name.I

我检查了服务中的 Java 对象类型,它是 B 类型,似乎完全没问题。为什么B类型的对象不能赋值给I类型的成员变量?这让我发疯了。

提前致谢。

0 投票
2 回答
970 浏览

apache-flex - Coldfusion 返回类型化对象/AMF 远程处理

在 ColdFusion 中是否也有可能?目前我正在使用 .Net/Fluorine 将对象返回给客户端。在测试中,我喜欢传递代表 select 语句的字符串和我希望从我的服务返回的自定义对象。Fluorine 有一个 ASObject 类,您可以将其设置为 var 'typeName'; 效果很好。我希望这在 Coldfusion 中是可能的。有谁知道您是否可以以类似的方式设置返回对象的类型。这对于大型集合特别有用,因为 Flash 播放器会将它们转换为同名的本地对象,从而节省了对集合的交互以将对象转换为特定的自定义对象。

非常感谢,

0 投票
5 回答
3221 浏览

iphone - 在 iPhone 上使用 AMF 而不是 JSON?(用于网络服务)

虽然 iPhone 本身支持 JSON,但 AMF 是一个二进制协议,它应该使用更少的带宽。您认为使用 AMF 是个好主意吗?

刚刚在可可(Objective-C)中找到了这个 AMF 库:http: //github.com/nesium/cocoa-amf/

这是一个著名的基准,它显示 AMF 在 Flex 中比 JSON + gzip 更小更快:http ://www.jamesward.com/census/

0 投票
2 回答
4034 浏览

java - 用于编码/解码 AMF 的 Java 库

我目前有一个 Java 服务器,它通过通过二进制套接字连接传递 JSON 编码数据来与 Flash 客户端通信。是否有办法将数据包编码/解码为 AMF 而不是 JSON?在我看来,Flash 播放器中应该有一些本机支持来执行此操作?我发现的所有 AMF 序列化实现似乎都嵌入在应用程序框架中。

类似地,有谁知道是否可以独立于 Flash 中的连接实现来解码 AMF 数据包?

0 投票
5 回答
5105 浏览

apache-flex - AMF 和跨站点脚本漏洞混淆

我刚刚代表 SFDC 接受了德勤的安全审计。基本上我们使用 flex 并通过 AMF 进行通信。我们为此使用 FluorineFX(与 LCDS 和 Blaze 不同)。我们被告知,因为 AMF 响应没有编码,并且有人可以操纵 AMF 参数并插入 Javascript,这是一个 XSS 漏洞。我正在努力理解 AMF 响应如何返回,它可以在错误消息中回显传入的 JS,可以由浏览器或其他任何东西执行。我对带有 HTML 和 JS 的 XSS 非常有经验,但是看到它被标记为 AMF 有点令人惊讶。我与 FluorineFx 团队保持联系,他们也很困惑。

看到 AMF 库对响应数据进行编码,我会感到惊讶,而 Fluorine 肯定不会。尽管像 PortSwigger 和 IBM AppScan 这样的安全应用程序似乎在他们的工具箱中包含了这种类型的测试。您是否在 AMF 中遇到过这个漏洞,您能解释一下 XSS 问题是如何表现出来的吗?只是好奇。如果存在争论,我需要争论我的出路,或者修补漏洞。鉴于 Flex 的 AMF 用法,我认为您可能会有一些见解。

附加信息 ...

因此,请从实际供应商 PortSwigger 那里获得更多信息。我向他们提出了这个问题,net,net,他们承认这种类型的攻击非常复杂。最初他们将此归类为高严重性安全问题,但我认为他们现在正在改变。我想我会为大家发布他们的回复内容,因为我认为这个观点仍然很有趣。

--- 来自 PortSwigger 的问题 ---

感谢您的留言。我认为答案是这可能是一个漏洞,但利用起来并非易事。

你是对的,当 AMF 客户端使用响应时不会出现问题(除非它做了一些愚蠢的事情),而是如果攻击者可以设计一个浏览器使用响应的情况。大多数浏览器会忽略 HTTP Content-Type 标头,并会查看实际的响应内容,如果它看起来完全像 HTML 一样会很高兴地处理它。从历史上看,存在许多攻击,人们将 HTML/JS 内容嵌入其他响应格式(XML、图像、其他应用程序内容)中,并由浏览器执行。

所以问题不在于响应的格式,而在于生成它所需的请求格式。攻击者设计包含有效 AMF 消息的跨域请求并非易事。包含类似 XSS 行为的 XML 请求/响应也会出现类似的情况。创建一个被浏览器视为 HTML 的有效 XML 响应当然是可能的,但挑战在于如何在 HTTP 正文跨域中发送原始 XML。这不能使用标准的 HTML 表单来完成,因此攻击者需要找到另一种客户端技术或浏览器怪癖来执行此操作。从历史上看,这样的事情在不同的时间都是可能的,直到它们被浏览器/插件供应商修复。我目前不知道有什么可以允许的。

简而言之,这是一种理论上的攻击,根据您的风险状况,您可以完全忽略或阻止使用服务器端输入验证,或者通过在服务器上编码输出并在客户端再次解码。

我确实认为 Burp 应该将 AMF 请求格式标记为缓解此问题,并将影响降级为低 - 我会解决这个问题。

希望有帮助。

干杯 PortSwigger

--- 更多关于审计的信息 ---

portSwigger 所做的不一定是二进制有效负载,它们所做的是与发布到处理程序以引导请求的实际 AMF 参数混淆。例如,这里是审计的一个片段,它显示了 AMF 对请求的响应的一部分......

注意那里的“警报”脚本......他们所做的是将一些包含JS的脚本附加到传递的包含调用方法的参数之一,即“com.Analytics.ca.Services.XXX”。通过这样做,JS 会返回一条错误消息,但是要让 JS 接近执行,必须发生很多事情。充其量似乎是间接威胁。

-- 安全审计师的最新观点 --

我已经与更大的团队进行了讨论,我们都认为这是一次有效的攻击。正如 PortSwigger 在他的第一段中提到的那样,虽然理论上由于您将内容类型设置为 x-amf,并且希望它不会在浏览器中呈现,但大多数浏览器都会忽略此请求并无论如何都会呈现它。我认为供应商在很大程度上依赖于设置内容类型这一事实。然而,像 IE 和某些版本的 Safari 等流行浏览器会忽略这一点。

利用 CSRF 或任何其他形式的 XSS 攻击很容易触发攻击。