有没有一种安全的方法将变量从php发送到flash

时间:2012-06-03 02:19:38

标签: php flash security

我首先要说的是我对flash和php都比较新。

目前我的网站设置包含用户登录名和密码(在php中)。成功登录后 - (php查询mysql)用户登录,用户名和其他一些变量存储为会话变量。

我要做的是在flash中创建一个在线测验。测验将嵌入网页中。它需要从会话变量中获取用户名并将其传递给flash,以便了解正在使用测验的帐户。是否可以安全地将用户名传递给闪存程序?如果是这样,我应该在哪里寻找更多信息?

由于

4 个答案:

答案 0 :(得分:2)

Flash支持名为Action Message Format(AMF)的东西,这是Flash应用程序可用于调用服务器上的方法并接收响应的协议。

AMF是一种二进制协议,服务器端支持多种语言,包括PHP(以及许多PHP框架)。我怀疑如果您的Flash应用程序可以发出HTTPS请求,它应该能够通过HTTPS发出AMF请求。

但是......“安全”?

如果可以在线上嗅探AMF数据,则可以将其反序列化,就像明文一样。 Flash插件是一个封闭的源代码应用程序,因此您无法查看源代码,然后自行编译,以确保它没有执行您未经授权的任何操作。

如何定义“安全”?您希望防范的攻击或信息泄露究竟是什么?

对于您的应用程序,可能的策略是让浏览器对用户进行身份验证并建立PHP会话。然后在加载时将会话cookie值作为变量传递给Flash应用程序。然后,您的Flash应用程序可以创建自己的HTTP / HTTPS请求,其中包含cookie标头,从而将请求标识为已建立会话的一部分。

在我看来应该有一种更简单的方法来解决这个问题,但我对Flash的了解也很有限。

我认为你应该考虑不要使用Flash进行这项努力。

答案 1 :(得分:1)

除非它被忽视:你试图阻止什么样的攻击,你准备支付多少钱?

以相反的顺序;为了让您的服务器通过HTTPS提供页面,您需要从某个授权机构购买证书。这不是免费服务+它到期。使用加密连接服务页面按时间和内存对服务器征税,需要对数据进行编码+流量(几乎是基本大小的两倍)。它还会嵌入其他人的内容,例如广告,来自其他网站的图片有问题,因为并非所有广告提供商都会通过安全和不安全的连接提供广告。如果您计划通过展示广告从您的网站中获利,那么这可能是一个显示者。

各种攻击:你是谁保护谁?您是否担心Flash会以某种方式帮助将您的应用程序逻辑暴露给潜在的攻击者,以便她能够利用您的系统弱点?例如,如果您使用Flash将内容上传到服务器,或者在某些情况下允许使用Flash加载服务器代码,则可以这样做。

或者您是否正在尝试保护用户免受其他用户的攻击,例如,如果一个用户可以窃听其他用户发送的内容,它可能会使她受益?

还有上述两种程度和组合。

为什么需要将用户的名字传回给他们?我想他们一定已经知道了。或者您是否偶然意味着Flash应该发送用户名?在这种情况下,再次,究竟是什么危险?是其他用户知道发送了什么名称或者用户自己能够发送“错误”的名称吗? “错误”我指的是同时出现的几件事:错误 - 可能是另一个用户的名字,或者是“正确”用户的名字,但是以某种方式发送它会启动另一个会话而不是在现有会话内部(从另一个标签/浏览器登录。

一些额外的信息:虽然您必须为证书付费,但使用Flash而不是依赖裸浏览器的能力是有利的。如果您对安全性的主要关注不那么通过使用HTTPS提供整个站点来打动潜在客户,那么您可以习惯在Flash中实施HTTPS,但是,这需要大量的工作和对此事的理解。 SSL(用于通过HTTPS提供页面的加密)依赖于使用2部分密钥的双向编码原理,例如RSA。这个想法是,给定一个公钥只能加密数据,但你需要私钥来解密它。因此,向您的用户发送公钥是安全的,他们以后可以使用它来加密他们发送的数据。在这种情况下,其他任何人都无法窃听服务器和用户之间在从用户到服务器的方向上发送的数据,即使他们可能拥有公钥,他们也无法解密数据。但这并不妨碍他们潜在地知道服务器发送给客户端的信息 - 您应该将其视为可能始终知道并且无法隐藏。

答案 2 :(得分:1)

让这样的测验安全的唯一方法是:

  • 在测验结束时,Flash应用程序将所有答案(不是结果,只是答案)发送到PHP端(闪存可以执行XHR) < / LI>
  • PHP方面可以验证用户会话(如果他开始测验,如果他在测验上花了超过1秒钟......这样的细节)
  • PHP脚本将结果或错误代码
  • 的响应发送回Flash-thing

答案 3 :(得分:0)

方式将数据“从PHP”发送到Flash,但没有安全方式来执行此操作。

要将任何数据“发送”到Flash,您需要......

  • 将其打印在与Flash元素相同的页面上(或直接显示在显示它的元素中)。但是,人们可以编辑您打印的任何信息,并使用它来操纵发送到Flash的数据。

  • 让Flash发出HTTP(S)请求,并从那里获取数据。这也不起作用,因为Flash文档可以被反编译,或者数据可以被拦截(甚至被欺骗)。